Windows Active Directoryグループ内のユーザーを一覧表示するコマンドライン?


136

特定のActive Directoryグループ内のすべてのユーザーを一覧表示するコマンドラインの方法はありますか?

[コンピューターの管理] -> [ ローカルユーザー/グループ] -> [ グループ ]に移動し、グループをダブルクリックすると、グループ内のユーザーを確認できます。

データを取得するにはコマンドラインの方法が必要なだけなので、他の自動化されたタスクを実行できます。

回答:


37

試してみる

dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members

1
メンバーを解決し、ネストされたグループのメンバーを複製するには、おそらくもう少し行う必要があります。
duffbeer703 09

1
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expandネストされたグループのメンバーを取得しますが、重複の助けにはならない場合があり、CNだけでなく、メンバーの完全なADクエリ文字列を提供します。
jonnybot

2
Win7 SP1でコマンドが見つかりません。RSATをインストールする必要があると思いますか?
イッツィー14年

11
「dsget」は、内部コマンドまたは外部コマンドとして認識されない、など。
アドルフ・ニンニク


238

コマンドプロンプトからの別の方法を次に示しますが、出力を解析する必要があるため、どのように自動化できるかはわかりません。

グループが「グローバルセキュリティグループ」の場合:

net group <your_groupname> /domain

「ドメインローカルセキュリティグループ」を探している場合:

net localgroup <your_groupname> /domain

23
なぜこれがダウン投票されたのかはわかりません...出力には少し解析が必要かもしれませんが、ベースウィンドウインストールの一部であるユーティリティにのみ依存するという利点があります。
G-ウィズ

2
しかし、切り捨てられたグループ名を回避する方法はありますか?
-deed02392

1
これは素晴らしい!御treat走をしました。
WOPR

2
これは再帰的ではなく、グループ内のグループをリストしないことに注意してください。ネストされたグループまたは階層グループがある場合、あまり役に立ちません。
マーク

これは私にとって完璧に機能します(そしてにうまく調和しますnet user /domain)。ありがとう!
xan

49

これは、特に複雑なOU構造があり、必ずしもグループの完全な識別名を知らない場合に便利な、dsコマンドのバージョンです。

dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand

または、通常はSAM IDと同じグループのCNを知っている場合は、名前にスペースが含まれている場合に引用されます。

dsquery group -name "Group Account Name" | dsget group -members -expand

コメントに記載されているように、デフォルトではds *コマンド(dsquery、dsget、dsadd、dsrm)はドメインコントローラーでのみ使用できます。ただし、Windows Serverインストールメディアのサポートツールから管理ツールパックをインストールするか、Microsoftダウンロードサイトからダウンロードできます

PowerShellを使用してこれらのクエリを実行することもできます。PowerShellは、Server 2008、2008 R2、およびWindows 7のインストール可能な機能として既に利用可能ですが、WinRMフレームワークダウンロードしてXPまたはVistaにインストールする必要があります。

PowerShellで任意のAD固有のコマンドレットへのアクセスを取得するには、なりますALSO次のインストールのうちの少なくとも1つを実行する必要があります。


私は常に最初のクエリを使用します
ジムB

1
ドメインコントローラーでこのコマンドを実行する必要があることに注意してください。
スコリマ

9
あなたはしないでください、ドメインコントローラ上でこのコマンドを実行する必要があります。ただし、DOのWindows 2003 ServerのCD-ROM上のサポートツールに含まれている管理サポートパックの.msiをインストールしておく必要があります。または、microsoft.com
Ryan Fisher

24

Quest ADアドインを必要としないPowerShellソリューションについては、次を試してください。

Import-Module ActiveDirectory

Get-ADGroupMember "Domain Admins" -recursive | Select-Object name

これにより、ネストされたグループも列挙されます。そうしたくない場合は、-recursiveスイッチを削除してください


6
ActiveDirectoryモジュールにはQuest ActiveRoles ADスナップインは必要ありませんが、RSATツールをインストールし、ADにActive Directory Webサービス(2008年のいずれか) R2)またはActive Directory Management Gateway Service(2003、2008 DC用)がインストールされている。詳細とリンクについては、上記の私の回答をご覧ください。
ライアンフィッシャー

16

サーバーとクライアントで動作する非常に簡単な方法:

NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"

ユーザーがグループYOURGROUPNAMEに属している場合は1を返し、そうでない場合は0を返します

次に、%ERRORLEVEL%値(グループ内のユーザーの場合は0、そうでない場合は1)を使用できます

IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE

1
「net group」コマンドは、コンピューターが参加しているドメイン(またはドメインツリー)のみを検索します。より現代的な代替手段は次の whoami /groups | find /I /C "YOURGROUPNAME"
とおりです。– DavisNT


7

これらのコマンドはWindowsの他のバージョン(Windows 7など)には付属していないためdsget、ここでの回答はdsquery、サーバーバージョンのWindowsでのみ機能します。これらのコマンドのないマシンでは、AdFindコマンドを使用して必要な情報を取得できます。

グループメンバーシップを取得するためのクエリの例を次に示します。

AdFind.exe -default -f name="Domain Admins" member -list

4
ADFind.exeは、とにかくインストールする必要があるサードパーティのツールです。ds *コマンドは、管理ツールパックからインストールできます。
ライアンフィッシャー

4

ローカルグループとユーザーを一覧表示する方法は?

次の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からこれを実行できます。


私は得て、cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters:そして入力を求めますProcess[0]
マイクS

3

UserGroup1tryの表示メンバーの場合:

dsquery group -name UserGroup1 | dsget group -members | dsget user -display

1
これをどのCLIユーティリティで使用するかを指摘したい場合がありますcmd。何らかの理由で、からうまく機能しないと思います。
HopelessN00b

@ HopelessN00b:これはcmdで動作します
ピート

@Pete Newp! dsget failed:'Target object for this command' is missing.
HopelessN00b

@ HopelessN00b:私はUserGroup1が存在しない場合は、「会計*」のような何かしようとエラーが出る
ピート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.