特定のActive Directoryグループに所属するすべてのユーザーをリストアップするコマンドラインの方法はありますか?
コンピュータの管理 --> ローカルユーザー/グループ --> グループ*に移動して、グループをダブルクリックすると、グループに参加している人を確認することができます。
私はただ、データを取得するコマンドラインの方法が必要で、そうすれば他の自動化されたタスクを実行することができます。
特に、複雑な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)はDomain Controllerでのみ利用可能です。 ただし、Windows ServerのインストールメディアのサポートツールからAdmin Toolsパックをインストールするか、マイクロソフトのダウンロードサイトからダウンロードすることができます。
また、これらのクエリーはPowerShellを使用して実行することができます。 PowerShellは、Server 2008、2008 R2、Windows 7ではすでにインストール可能な機能として提供されていますが、XPやVistaにインストールするには、WinRM Frameworkのダウンロードが必要です。
PowerShellでAD固有のコマンドレットにアクセスするためには、以下の少なくとも1つのインストールが必要ですALSO。
サーバーとクライアントで機能する非常に簡単な方法:
NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"
ユーザーがグループYOURGROUPNAMEにいる場合は1を返し、それ以外の場合は0を返します。
次に、%ERRORLEVEL%の値(グループのユーザーの場合は0、グループの場合は1)を使用できます。
IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE
PowerShellとQuest Software'Free ActiveRoles Management Shell for Active Directoryを使用することで、使用することができます。
(Get-QADGroup "GroupName").Members。
ローカルグループとユーザーをリストする方法?
次の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から実行できます。