Active DirectoryにユーザーのユーザーIDがあるとします。そのユーザーが現在メンバーになっているすべてのADグループのリストを取得したいと思います。 Windowsコマンドラインからこれを行うにはどうすればよいですか?
私は以下を試しました:
dsget user "DC=jxd123" -memberof
エラー:
dsquery failed:'-memberof' is an unknown parameter.
type dsquery /? for help.
PowerShellでこれをかなり簡単に行うことができます。あなたもdsツールでそれを行うことができると確信していますが、それらは古くて無愛想であり、PowerShellは現在可能な限りすべてに使用されるべきです。
Import-Module ActiveDirectory
(Get-ADUser userName –Properties MemberOf | Select-Object MemberOf).MemberOf
短いバージョン
(Get-ADUser userName –Properties MemberOf).MemberOf
またはNet Userコマンドを使用して...
Net User /domain username
1行、モジュール不要、現在ログインしているユーザー$($ env:username)を使用、他のWindowsマシンから実行:
(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf
このvbs/powershell記事のクドス: http://technet.Microsoft.com/en-us/library/ff730963.aspx
良いリソースが見つかりました:
Windowsコマンドプロンプトから実行する方法は次のとおりです:
dsquery user -samid jxd123 | dsget user -memberof | dsget group -samid
パワーシェル:
Get-ADPrincipalGroupMembership -Identity jdoe | Format-Table -Property name
自分のグループを表示する必要がある場合は、 whoami /groups
があります。
現在のユーザーが属するユーザーグループを表示します。
このコマンドのNet User /domain username
に対する利点は、暗黙的なグループメンバーシップもwhoami
で表示されることです。
別のアプローチ:Windowsアカウントトークンからすべての暗黙的なグループメンバーシップを一覧表示するPowerShellスクリプト。制限されたシステムで動作します。
$token = [System.Security.Principal.WindowsIdentity]::GetCurrent()
ForEach($group in $token.Groups){
$group.Translate([System.Security.Principal.NTAccount])
}
dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt
adfindは、このようなことを行うためのもう1つの優れたツールです。 MVP Joe Richardsの無料ツールです
http://www.joeware.net/freetools/tools/adfind/
あなたは不足の1つを使うことができます
adfind -sc u:username memberof
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name
このPowerShellバージョンは、グループのDNではなく、ADグループ名のみを返します。 「オブジェクトの選択」出力は、CSVまたはテストファイルに簡単にパイプ処理できます。
(Get-ADUser ExampleUser –Properties MemberOf).memberof | Get-ADGroup | Select-Object name
Powershell、すてきでクリーンな出力を提供します。
(get-aduser USER -Properties MemberOf | select MemberOf).MemberOf | % {$_.split(",")[0].replace("CN=","")}
以下は、特定のドメインの下にあるすべてのドメインを検索するソリューションです(各ドメインに適切なアクセス許可がある場合):
# provide the logon name here:
$user="alice"
$allGroups=@()
foreach ( $d in (Get-ADForest example.net).domains ) { Write-Output "Looking up $user in domain $d"; $allGroups += Get-ADPrincipalGroupMembership $user -ResourceContextServer $d }
$allGroups | ft name,GroupScope,distinguishedName -AutoSize