特定のActive Directoryグループ内のすべてのユーザーを一覧表示するコマンドライン方法はありますか?
コンピューターの管理-> ローカルユーザー/グループ-> グループに移動してグループをダブルクリックすると、グループに参加しているユーザーを確認できます。
他のいくつかの自動化タスクを実行できるように、データを取得するためのコマンドライン方法が必要です。
試す
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members
コマンドプロンプトからの別の方法を次に示します。ただし、出力を解析する必要があるため、自動化がどの程度可能かはわかりません。
グループが「グローバルセキュリティグループ」の場合:
net group <your_groupname> /domain
「ドメインローカルセキュリティグループ」を探している場合:
net localgroup <your_groupname> /domain
これは、特に複雑なOU構造があり、必ずしもグループの完全な識別名がわからない場合に、私がより一般的に役立つdsコマンドのバージョンです。
dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand
または、グループのCNがわかっている場合(通常はSAM IDと同じ)、名前にスペースがある場合は引用符で囲みます。
dsquery group -name "Group Account Name" | dsget group -members -expand
コメントに記載されているように、デフォルトでは、ds *コマンド(dsquery、dsget、dsadd、dsrm)はドメインコントローラーでのみ使用できます。ただし、Windows Serverインストールメディアのサポートツールから、またはMicrosoftダウンロードサイトから download it から管理ツールパックをインストールできます。
PowerShellを使用してこれらのクエリを実行することもできます。 PowerShellは、Server 2008、2008 R2、およびWindows 7のインストール可能な機能としてすでに利用可能ですが、インストールするためには WinRMフレームワークをダウンロード する必要がありますXPまたはVista。
PowerShellでAD固有のコマンドレットにアクセスするには、[〜#〜]また[〜#〜]次のインストールの少なくとも1つを実行する必要があります。
Quest ADアドインを必要としないPowerShellソリューションについては、以下を試してください
Import-Module ActiveDirectory
Get-ADGroupMember "Domain Admins" -recursive | Select-Object name
これにより、ネストされたグループも列挙されます。そうしたくない場合は、-recursiveスイッチを削除します。
サーバーとクライアントで動作する非常に簡単な方法:
NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"
ユーザーがグループYOURGROUPNAMEに属している場合は1を返し、そうでない場合は0を返します
次に、%ERRORLEVEL%値(グループ内のユーザーの場合は0、そうでない場合は1)を使用できます。
IF %ERRORLEVEL%==0 Net Use %LOGONSERVER%\YOURGROUPSHARE
PowerShellおよびQuest SoftwareのActive Directory用の無料のActiveRoles管理シェルを使用すると、以下を使用できます。
(Get-QADGroup "GroupName")。Members
ここでのdsget
とdsquery
を使用した回答は、サーバーのバージョンのWindowsでのみ機能します。これらのコマンドは他のバージョンのWindows(Windows 7など)には同梱されていないためです。これらのコマンドのないマシンでは、 AdFindコマンド を使用して必要な情報を取得できます。
グループメンバーシップを取得するためのクエリの例を次に示します。
AdFind.exe -default -f name="Domain Admins" member -list
ローカルグループとユーザーを一覧表示する方法は?
次のPowerShellスクリプトを使用して、ローカルグループとそれらのグループのメンバーを一覧表示します。
$server="YourServerName"
$computer = [ADSI]"WinNT://$server,computer"
$computer.psbase.children | where {
$_.psbase.schemaClassName -eq 'group' } | foreach {
write-Host $_.name
write-Host "------"
$group =[ADSI]$_.psbase.Path
$group.psbase.Invoke("Members") | foreach {
$_.GetType().InvokeMember("Name", 'GetProperty',
$null, $_, $null)}
write-Host
}
上記のテキストをメモ帳にコピーし、filename.ps1
として保存します。次に、ファイルを実行します。各グループのグループとユーザーを表示する必要があります。そうしないと、Powershellから実行できます。
UserGroup1
のディスプレイメンバーの場合:
dsquery group -name UserGroup1 | dsget group -members | dsget user -display