Bagaimana cara mendapatkan semua grup yang menjadi anggota?

135

Get-ADGroupMemberCmdlet PowerShell mengembalikan anggota grup tertentu. Apakah ada cmdlet atau properti untuk mendapatkan semua grup yang menjadi anggota pengguna tertentu?


Saya memperbaiki kesalahan saya: Get-Memberseharusnya Get-ADGroupMember.

Primoz
sumber
Pertanyaannya tidak jelas. Bisakah Anda membingkai ulang atau menambahkan contoh?
Mohit Chakraborty
1
Lihat stackoverflow.com/questions/668321/… dan technet.microsoft.com/en-us/library/dd315351.aspx . Apakah Anda yakin Get-Member melakukan apa yang Anda pikirkan?
tiago2014
@Mohit Chakraborty Apakah sekarang lebih jelas?
Primoz
1
cepat Anda dapat menggunakan net user /domain username, periksa juga metode lain di Get Groups di mana pengguna adalah anggota. Menggunakan PowerShell
Mohamed

Jawaban:

282

Get-ADPrincipalGroupMembership akan melakukan ini.

Get-ADPrincipalGroupMembership username | select name

name
----
Domain Users
Domain Computers
Workstation Admins
Company Users
Company Developers
AutomatedProcessingTeam
kstrauss
sumber
1
Ini baru saja menyelamatkan saya dari menggunakan metode yang paling berbelit-belit dan panjang untuk menemukan ini. Tahu bahwa PowerShell akan memiliki sesuatu seperti ini tetapi tidak dapat menemukannya di mana pun. +1
Tim Alexander
7
Perhatikan bahwa ini tergantung pada modul ActiveDirectory yang tersedia. Itu tidak akan bekerja pada mesin klien tempat Anda menjalankan skrip PowerShell, atau pada klien tingkat bawah. Jika Anda ingin melakukannya, gunakan solusi ini .
Daniel.S
5
Di atas memberi saya kesalahan ("Server tidak dapat memproses permintaan karena kesalahan internal" - mungkin fungsi tidak tersedia di server). get-aduser $username -Properties memberof | select -expand memberofbekerja dengan baik.
JohnLBevan
5
Jika Anda menggunakan workstation Windows 10 dan bukannya server, instal RSAT dari sini , lalu ketikkan import-module activedirectoryperintah powershell, maka ini harus dijalankan.
James Toomey
3
Jika modul tidak diinstal: Instal-WindowsFeature RSAT-AD-PowerShell
Preben Huybrechts
81

Baris tunggal, tanpa modul yang diperlukan, menggunakan pengguna yang dicatat saat ini:

(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

Qudos untuk artikel vbs / powershell ini: http://technet.microsoft.com/en-us/library/ff730963.aspx

Kano
sumber
5
Terima kasih, saya menghargai versi tanpa modul ini. Saya hanya mengubah variabel dari $env:usernamemenjadi $usernamedan mengatur dengan $username = "testuser"mudah melakukan substitusi variabel untuk pencarian pengguna lain.
projectdp
Cukup googled jalan saya kembali ke sini lagi! Masih berguna dalam situasi acak di mana alat AD tidak tersedia.
Nathan
43

Alternatif yang lebih ringkas daripada yang diposting oleh Canoas, untuk mendapatkan keanggotaan grup untuk pengguna yang saat ini masuk.

Saya menemukan metode ini dalam posting blog ini: http://www.travisrunyard.com/2013/03/26/auto-create-outlook-mapi-user-profiles/

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof

Versi yang lebih baik lagi yang menggunakan regex untuk menghapus LDAP dan meninggalkan nama grup saja:

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof -replace '^CN=([^,]+).+$','$1'

Rincian lebih lanjut tentang menggunakan akselerator tipe [ADSISEARCHER] dapat ditemukan di blog guy skrip: http://blogs.technet.com/b/heyscriptingguy/archive/2010/08/24/use-the-powershell-adsisearcher-type -accelerator-to-search-active-directory.aspx

Daniel
sumber
1
Kedua hal ini memberi saya kesalahan: Pengecualian memanggil "FindOne" dengan argumen "0": "Samaccountname = filter pencarian tidak valid."
Dallas
Aneh .... Saya baru saja mengujinya lagi, tetapi pada Windows 7 di lingkungan yang sama sekali berbeda, dan berfungsi dengan baik di sini juga.
Daniel.
Saya mencoba lagi sekarang, masih pada Win 7, dan itu berfungsi dengan baik. Mungkin saya salah ketik ketika pertama kali mencoba ini. Terima kasih telah menambahkan pengganti untuk menghapus "guff" hutan.
Dallas
2
Bekerja dengan baik, tambahkan | Sort-Objectuntuk membuatnya lebih mudah dibaca.
Martin Hollingsworth
31

Jalan sekolah lama dari CMD:

net user mst999 /domain 
pengguna4511672
sumber
1
itu juga bekerja pada mesin klien tanpa alat AD tambahan
Rast
4
Sayangnya - jika nama grup Anda panjang (mis.> 21 karakter) maka itu akan memotong mereka ...
kiltannen
yang satu berdetak dengan cara lain! Bravo
StayCool
24
(GET-ADUSER Identity USERNAME Properties MemberOf | Select-Object MemberOf).MemberOf
schmeckendeugler
sumber
Terima kasih! ini berhasil. Satunya downside adalah nilai yang dikembalikan adalah string.
shaiss
3
| get-adgroup akan menampilkan objek grup. Cemerlang!
8DH
1
atau, gunakan $ env: USERNAME sebagai gantinya untuk mengambil nama pengguna pengguna yang saat ini masuk
Dave Lucre
6

Jika Anda tidak bisa mendapatkan Get-ADPrincipalGroupMembership agar Anda bisa mencoba masuk sebagai pengguna yang kemudian gunakan.

$id = [Security.Principal.WindowsIdentity]::GetCurrent()
$groups = $id.Groups | foreach-object {$_.Translate([Security.Principal.NTAccount])}
$groups | select *
andrew pate
sumber
Anda tidak perlu masuk sebagai pengguna jika menggunakan sesuatu seperti$id = [Security.Principal.WindowsIdentity]("username")
Bitcoin Murderous Maniac
1
Ini lebih pendek menjadi satu-liner [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | % {$_.Translate([Security.Principal.NTAccount])}.
alx9r
5

Dapatkan keanggotaan grup untuk pengguna:

$strUserName = "Primoz"
$strUser = get-qaduser -SamAccountName $strUserName
$strUser.memberof

Lihat Dapatkan Keanggotaan Grup untuk Pengguna

Tetapi juga lihat Perintah PowerShell Gratis Quest untuk Active Directory .

[ Sunting : Get-ADPrincipalGroupMembership perintah termasuk dalam Powershell sejak v2 dengan Windows 2008 R2. Lihat jawaban kstrauss di bawah ini.]

tiago2014
sumber
2
Sebenarnya ada cara yang lebih mudah dengan cmdlets Quest: Get-QADGroup -Memuat Primoz
fenster
18
Ini bukan lagi jawaban terbaik karena Get-ADPrincipalGroupMembership sekarang dibangun di PowerShell
Rob Cannon
1
Memilih karena akan jauh lebih baik menggunakan Get-ADPrincipalGroupMembership. Saya ingin membatalkan downvote ini, tetapi saya tidak bisa. Saya akan mengedit jawaban untuk menunjukkan bahwa opsi bawaan sekarang ada.
Abraham
4

Get-Memberadalah cmdlet untuk mendaftar anggota .NET object. Ini tidak ada hubungannya dengan keanggotaan pengguna / grup. Anda bisa mendapatkan keanggotaan grup pengguna saat ini seperti:

PS> [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | 
         Format-Table -auto

BinaryLength AccountDomainSid    Value
------------ ----------------    -----
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-513
          12                     S-1-1-0
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-1010
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-1003
          16                     S-1-5-32-545
...

Jika Anda memerlukan akses ke info grup pengguna yang berubah-ubah, maka saran @tiagoinu untuk menggunakan cmdlet Quest AD adalah cara yang lebih baik.

Keith Hill
sumber
4

Pertama, impor modul direktori aktif:

import-module activedirectory

Kemudian terbitkan perintah ini:

Get-ADGroupMember -Identity $group | foreach-object {
    Write-Host $_.SamAccountName
}

Ini akan menampilkan anggota grup yang ditentukan.

Jonathan Rioux
sumber
OP meminta yang sebaliknya. Dapatkan semua grup yang menjadi anggota pengguna tertentu.
8DH
4

Tidak perlu skrip panjang ketika itu adalah satu liner sederhana ..

Perintah QUEST

(Get-QADUser -Identity john -IncludedProperties MemberOf | Select-Object MemberOf).MemberOf

MS AD Command

(GET-ADUSER Identity john Properties MemberOf | Select-Object MemberOf).MemberOf

Saya menemukan cmd MS AD lebih cepat tetapi beberapa orang menyukai Quest yang lebih baik ..

Steve

Steve Adkin
sumber
4

Get-Member bukan untuk mendapatkan keanggotaan grup pengguna. Jika Anda ingin mendapatkan daftar grup milik pengguna di sistem lokal, Anda dapat melakukannya dengan:

$query = "ASSOCIATORS OF {Win32_Account.Name='DemoUser1',Domain='DomainName'} WHERE ResultRole=GroupComponent ResultClass=Win32_Account"

Get-WMIObject -Query $query | Select Name

Dalam kueri di atas, ganti DemoUser1 dengan nama pengguna yang Anda inginkan dan Nama Domain dengan nama komputer lokal Anda atau nama domain.

ravikanth
sumber
Permintaan ini sangat memakan waktu dan merespons sangat lambat ketika ada banyak pengguna dan grup di lingkungan
randeepsp
Siapa pun yang mengedit jawaban, pastikan Anda mengeditnya dengan cara yang benar. Saya menyarankan OP untuk mengganti DemoUser1 dengan nama pengguna apa pun yang diinginkannya. Dan, Anda benar-benar mengubah makna itu.
ravikanth
4

Menggunakan:

Get-ADPrincipalGroupMembership username | select name | export-CSV username.csv

Ini memancarkan output perintah ke file CSV .

Dee
sumber
4

Ini akan memberi Anda detail untuk pengguna saat ini. Powershell tidak diperlukan.

whoami /groups

Nayan
sumber
3

Itu hanya satu baris:

(get-aduser joe.bloggs -properties *).memberof

akhir dari :)

pengguna4931356
sumber
Perpipaan ke a select -expandproperty memberofakan membuat output sedikit lebih mudah dibaca / berguna.
Ben Thul
2

Saya menulis fungsi PowerShell yang disebut Get-ADPrincipalGroupMembershipRecursive. Ia menerima DSN dari akun pengguna, komputer, grup, atau layanan. Itu mengambil daftar awal grup dari atribut anggota akun, lalu secara rekursif memeriksa keanggotaan grup tersebut. Kode singkat di bawah ini. Kode sumber lengkap dengan komentar dapat ditemukan di sini .

function Get-ADPrincipalGroupMembershipRecursive( ) {

    Param(
        [string] $dsn,
        [array]$groups = @()
    )

    $obj = Get-ADObject $dsn -Properties memberOf

    foreach( $groupDsn in $obj.memberOf ) {

        $tmpGrp = Get-ADObject $groupDsn -Properties memberOf

        if( ($groups | where { $_.DistinguishedName -eq $groupDsn }).Count -eq 0 ) {
            $groups +=  $tmpGrp           
            $groups = Get-ADPrincipalGroupMembershipRecursive $groupDsn $groups
        }
    }

    return $groups
}

# Simple Example of how to use the function
$username = Read-Host -Prompt "Enter a username"
$groups   = Get-ADPrincipalGroupMembershipRecursive (Get-ADUser $username).DistinguishedName
$groups | Sort-Object -Property name | Format-Table
Brian Reich
sumber
2

Di bawah ini berfungsi dengan baik:

get-aduser $username -Properties memberof | select -expand memberof

Jika Anda memiliki daftar pengguna:

$list = 'administrator','testuser1','testuser2'
$list | `
    %{  
        $user = $_; 
        get-aduser $user -Properties memberof | `
        select -expand memberof | `
        %{new-object PSObject -property @{User=$user;Group=$_;}} `
    }
JohnLBevan
sumber
1

Get-QADUser -SamAccountName LoginID | % {$ _. MemberOf} | Dapatkan-QADGroup | pilih nama

Sathish
sumber
1

Saya tidak bisa membuat yang berikut ini berfungsi untuk pengguna tertentu:

Get-ADPrincipalGroupMembership username

Itu melemparkan kesalahan bahwa saya tidak mau memecahkan masalah.

Namun saya datang dengan solusi yang berbeda menggunakan Get-ADUser. Saya menyukainya sedikit lebih baik karena jika Anda tidak tahu nama akun maka Anda bisa mendapatkannya berdasarkan wildcard pada nama sebenarnya pengguna. Cukup isi PartOfUsersName dan pergi begitu saja.

#Get the groups that list of users are the member of using a wildcard search

[string]$UserNameLike = "*PartOfUsersName*" #Use * for wildcards here
[array]$AccountNames = $(Get-ADUser -Filter {Name -like $UserNameLike}).SamAccountName

ForEach ($AccountName In $AccountNames) {
Write-Host "`nGETTING GROUPS FOR" $AccountName.ToUpper() ":"
(Get-ADUser -Identity $AccountName -Properties MemberOf|select MemberOf).MemberOf|
    Get-ADGroup|select Name|sort name
    }

Alat peraga besar untuk schmeckendeugler dan 8DH untuk membawa saya ke solusi ini. +1 untuk Anda berdua.

Adam
sumber
1

Meskipun ada banyak jawaban bagus di sini, ada satu yang secara pribadi saya cari yang hilang. Setelah saya menemukan jawabannya - saya pikir saya harus mempostingnya kalau-kalau saya ingin menemukannya nanti, atau itu benar-benar berhasil membantu orang lain di beberapa titik:

Get-ADPrincipalGroupMembership username | Format-Table -auto

Pendekatan kedua untuk mempresentasikan ini adalah dengan menentukan masing-masing kolom yang Anda minati misalnya:

Get-ADPrincipalGroupMembership username | select name, GroupScope, GroupCategory

Ini memberi semua grup AD nama pengguna itu menjadi milik - tetapi juga menyajikan semua properti default masing-masing grup yang diformat dengan baik sebagai tabel.

Manfaat utama ini memberi Anda adalah Anda dapat melihat sekilas mana daftar distribusi, & yang merupakan grup keamanan. Anda dapat melihat lebih jauh sekilas yang Universal, yang DomainLocal & yang Global.
Mengapa Anda peduli dengan bagian terakhir ini?

  • Grup universal adalah grup keamanan atau distribusi yang berisi pengguna, grup, dan komputer dari domain apa pun di hutannya sebagai anggota. Anda dapat memberikan hak dan izin grup keamanan universal pada sumber daya di domain apa pun di hutan.
  • Grup global adalah grup yang dapat digunakan dalam domainnya sendiri, di server anggota dan di workstation domain, dan dalam mempercayai domain. Di semua lokasi itu, Anda dapat memberikan hak dan izin grup global dan grup global dapat menjadi anggota grup lokal. Namun, grup global dapat berisi akun pengguna yang hanya dari domainnya sendiri.
  • Grup domain lokal adalah grup keamanan atau distribusi yang dapat berisi grup universal, grup global, grup lokal domain lain dari domainnya sendiri, dan akun dari domain apa pun di hutan. Anda dapat memberikan hak dan izin grup keamanan lokal domain pada sumber daya yang hanya berada di domain yang sama di mana grup lokal domain berada.
kiltannen
sumber
0
Import-Module ActiveDirectory
Get-ADUser -SearchBase "OU=Users,DC=domain,DC=local" -Filter * | foreach-object {
write-host "User:" $_.Name -foreground green
    Get-ADPrincipalGroupMembership $_.SamAccountName | foreach-object {
        write-host "Member Of:" $_.name
    }
}

Ubah nilai -Hasil pencarian untuk mencerminkan OU yang Anda butuhkan untuk daftar pengguna :)

Ini akan mencantumkan semua pengguna di OU itu dan menunjukkan kepada Anda kelompok mana mereka menjadi anggota.

Stephen Galvin
sumber
0

Dapatkan-ADPrincipalGroupMembership USERLOGON | pilih nama

Jacob Fischlein
sumber
0
   Get-ADUser -Filter { memberOf -RecursiveMatch "CN=Administrators,CN=Builtin,DC=Fabrikam,DC=com" } -SearchBase "CN=Administrator,CN=Users,DC=Fabrikam,DC=com"  -SearchScope Base
                  ## NOTE: The above command will return the user object (Administrator in this case) if it finds a match recursively in memberOf attribute. 
Sunil Aher
sumber
0

Ini adalah cara paling sederhana untuk mendapatkan namanya:

Get-ADPrincipalGroupMembership "YourUserName"

# Returns distinguishedName : CN=users,OU=test,DC=SomeWhere GroupCategory : Security GroupScope : Global name : testGroup objectClass : group objectGUID : 2130ed49-24c4-4a17-88e6-dd4477d15a4c SamAccountName : testGroup SID : S-1-5-21-2114067515-1964795913-1973001494-71628

Tambahkan pernyataan pilih untuk memangkas respons atau untuk mendapatkan setiap pengguna dalam OU setiap grup mereka adalah pengguna:

foreach ($user in (get-aduser -SearchScope Subtree -SearchBase $oupath -filter * -Properties samaccountName, MemberOf | select samaccountName)){ Get-ADPrincipalGroupMembership $user.samaccountName | select name}

Stuart
sumber
0

Untuk membuatnya rekursif, Anda dapat menggunakan:

<# 
    .SYNOPSIS   
        Get all the groups that a user is MemberOf.

    .DESCRIPTION
        This script retrieves all the groups that a user is MemberOf in a recursive way.

    .PARAMETER SamAccountName
        The name of the user you want to check #>

Param (
    [String]$SamAccountName = 'test',
    $DomainUsersGroup = 'CN=Domain Users,CN=Users,DC=domain,DC=net'
)


Function Get-ADMemberOf {
    Param (
        [Parameter(ValueFromPipeline)]
        [PSObject[]]$Group,
        [String]$DomainUsersGroup = 'CN=Domain Users,CN=Users,DC=grouphc,DC=net'
    )
    Process {
        foreach ($G in $Group) {
            $G | Get-ADGroup | Select -ExpandProperty Name
            Get-ADGroup $G -Properties MemberOf| Select-Object Memberof | ForEach-Object {
                Get-ADMemberOf $_.Memberof
            }
        }
    }
}


$Groups = Get-ADUser $SamAccountName -Properties MemberOf | Select-Object -ExpandProperty MemberOf
$Groups += $DomainUsersGroup
$Groups | Get-ADMemberOf | Select -Unique | Sort-Object
DarkLite1
sumber
0

Hampir semua solusi di atas menggunakan ActiveDirecotrymodul yang mungkin tidak tersedia secara default dalam kebanyakan kasus.

Saya menggunakan metode di bawah ini. Sedikit tidak langsung, tetapi melayani tujuan saya.

Daftar semua grup yang tersedia

Get-WmiObject -Class Win32_Group

Dan kemudian daftar grup milik pengguna

[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups

Perbandingan kemudian dapat dilakukan melalui pemeriksaan melalui SIDs. Ini berfungsi untuk pengguna yang masuk. Tolong koreksi saya jika saya salah. Benar-benar baru di PowerShell, tetapi harus menyelesaikannya untuk komitmen kerja.

Ruifeng Ma
sumber
Jika Anda memeriksa pengguna yang sudah menjadi anggota grup Administrator, pastikan mulai PowerShell dengan "Run As Administrator", jika tidak, grup tidak akan terdaftar dengan benar untuk perintah ke-2 ... butuh beberapa saat untuk mengetahui ini keluar ... windows ...
Ruifeng Ma
0

Dengan input pengguna dan format output yang bagus:

[CmdletBinding(SupportsShouldProcess=$True)] 
Param( 
    [Parameter(Mandatory = $True)] 
    [String]$UserName 
) 
Import-Module ActiveDirectory 
If ($UserName) { 
    $UserName = $UserName.ToUpper().Trim() 
    $Res = (Get-ADPrincipalGroupMembership $UserName | Measure-Object).Count 
    If ($Res -GT 0) { 
        Write-Output "`n" 
        Write-Output "$UserName AD Group Membership:" 
        Write-Output "===========================================================" 
        Get-ADPrincipalGroupMembership $UserName | Select-Object -Property Name, GroupScope, GroupCategory | Sort-Object -Property Name | FT -A 
    } 
}
coinbird
sumber
0

Menempatkan ini di sini untuk referensi di masa mendatang. Saya sedang berada di tengah-tengah migrasi email. Saya perlu mengetahui setiap akun pengguna dan keanggotaan grup masing-masing, dan juga saya perlu tahu setiap grup dan anggota masing-masing.

Saya menggunakan blok kode di bawah ini untuk menghasilkan CSV untuk keanggotaan grup setiap pengguna.

Get-ADUser -Filter * |`
  ForEach-Object { `
    $FileName = $_.SamAccountName + ".csv" ; `
    $FileName ; `
    Get-ADPrincipalGroupMembership $_ | `
      Select-Object -Property SamAccountName, name, GroupScope, GroupCategory | `
        Sort-Object -Property SamAccountName | `
          Export-Csv -Path $FileName -Encoding ASCII ; `
  }

Proses ekspor untuk grup dan anggota masing-masing sedikit berbelit-belit, tetapi di bawah ini berfungsi. Nama file keluaran termasuk jenis grup. Oleh karena itu, grup distribusi email yang saya butuhkan adalah / harus menjadi grup Distribusi Universal dan Global. Saya seharusnya bisa menghapus atau memindahkan file TXT yang dihasilkan yang tidak saya butuhkan.

Get-ADGroup -Filter * | `
 Select-Object -Property Name, DistinguishedName, GroupScope, GroupCategory | `
  Sort-Object -Property GroupScope, GroupCategory, Name | `
   Export-Csv -Path ADGroupsNew.csv -Encoding ASCII

$MyCSV = Import-Csv -Path .\ADGroupsNew.csv -Encoding ASCII

$MyCSV | `
 ForEach-Object { `
  $FN = $_.GroupScope + ", " + $_.GroupCategory + ", " + $_.Name + ".txt" ; `
  $FN ; `
  Get-ADGroupMember -Identity $_.DistinguishedName | `
   Out-File -FilePath $FN -Encoding ASCII ; $FN=""; `
  }
pengguna208145
sumber
0

Mempelajari semua komentar yang disajikan memberi saya titik awal (terima kasih untuk itu) tetapi meninggalkan saya dengan beberapa masalah yang belum terselesaikan. Hasilnya, inilah jawaban saya. Cuplikan kode yang disediakan sedikit lebih banyak dari yang diminta tetapi memberikan info debug yang membantu.

[array] $script:groupsdns = @()
function Get-ADPrincipalGroupMembershipRecursive() 
{
  Param( [string] $dn, [int] $level = 0, [array] $groups = @() )

  #if(($groupsdns | where { $_.DistinguishedName -eq $dn }).Count -ne 0 ) { return $groups } # dependency on next statement
  #$groupsdns += (Get-ADObject $dn -Properties MemberOf) # Get-ADObject cannot find an object with identity
  if ($script:groupsdns.Contains($dn)) { return $groups }
  $script:groupsdns += $dn
  $mo = $Null
  $mo = Get-ADObject $dn -Properties MemberOf # Get-ADObject cannot find an object with identity
  $group = ($dn + " (" + $level.ToString())
  if ($mo -eq $Null) { $group += "!" }
  $group += ")"
  $groups += $group
  foreach( $groupdn in $mo.MemberOf )
  {
    $groups = Get-ADPrincipalGroupMembershipRecursive -dn $groupdn -level ($level+1) -groups $groups
  }
  if ($level -le 0) 
  { 
    $primarygroupdn = (Get-ADUser -Identity $dn -Properties PrimaryGroup).PrimaryGroup 
    $groups = Get-ADPrincipalGroupMembershipRecursive -dn $primarygroupdn -level ($level+1) -groups $groups
  }
  return $groups
}
$adusergroups = Get-ADPrincipalGroupMembershipRecursive -dn $aduser.DistinguishedName
$adusergroups | ft -AutoSize | `
              Out-File -Width 512 Get-ADPrincipalGroupMembershipRecursive.txt #-Append #-Wrap # | Sort-Object -Property Name
ES44AC SD70MAC
sumber
Maaf saya lupa mengklarifikasi. Lakukan ini dulu: $ aduserDistinguishedName = "CN = name, OU = ..." $ aduser = Get-ADUser -Identity $ aduserDistinguishedName -Properties *
ES44AC SD70MAC
0

Ketika Anda tidak memiliki hak istimewa untuk berkonsultasi dengan grup anggota lain tetapi Anda memiliki hak istimewa untuk berkonsultasi dengan anggota grup, Anda dapat melakukan hal berikut untuk membuat peta yang pengguna memiliki akses ke grup mana.

$groups = get-adgroup -Filter * | sort name | select Name
$users = @{}
foreach($group in $groups) {
    $groupUsers = @()
    $groupUsers = Get-ADGroupMember -Identity $group.Name | Select-Object SamAccountName
    $groupUsers | % {
        if(!$users.ContainsKey($_.SamAccountName)){
            $users[$_.SamAccountName] = @()
        }
        ($users[$_.SamAccountName]) += ($group.Name)
    }
}
Nadzzz
sumber