Active Directory(AD)の運用管理では、セキュリティグループや配布グループに誰が所属しているかを定期的に確認・記録する必要があります。PowerShellを使えば、特定のグループまたは複数のグループのメンバーを一括で取得し、CSV形式で保存することができます。この記事では、実用的なスクリプト例とその応用方法を紹介します。
前提条件
- Active Directoryモジュールが使用可能であること(RSAT導入済みなど)
- PowerShellは管理者として実行推奨
- ドメイン環境に接続可能であること
特定グループのメンバー一覧を取得する
Get-ADGroupMember -Identity "SalesGroup" |
Select-Object Name, SamAccountName, objectClass
このコマンドは、「SalesGroup」というグループに属するメンバー(ユーザーまたはグループ)を一覧表示します。
メンバーの詳細情報を取得(メール・部署など)
Get-ADGroupMember -Identity "SalesGroup" | Where-Object {$_.objectClass -eq "user"} |
Get-ADUser -Properties DisplayName, Mail, Department |
Select-Object DisplayName, SamAccountName, Mail, Department
ネストされたグループ(入れ子構造)は対象外になるため、再帰的に確認したい場合は追加処理が必要です。
複数グループのメンバーを一括で取得する
$groups = @("SalesGroup", "AdminGroup", "HRGroup")
$result = @()
foreach ($group in $groups) {
$members = Get-ADGroupMember -Identity $group | Where-Object {$_.objectClass -eq "user"}
foreach ($member in $members) {
$user = Get-ADUser $member.SamAccountName -Properties DisplayName, Mail
$result += [PSCustomObject]@{
Group = $group
DisplayName = $user.DisplayName
SamAccount = $user.SamAccountName
Email = $user.Mail
}
}
}
$result | Export-Csv -Path "C:\Logs\GroupMembers.csv" -NoTypeInformation -Encoding UTF8
このスクリプトでは、指定した複数グループの所属メンバーを1ファイルにまとめてCSV出力します。
グループ一覧を自動取得する場合
$groupNames = Get-ADGroup -Filter * | Select-Object -ExpandProperty Name
これにより、ドメイン内のすべてのグループを対象とした自動処理にも対応できます。
まとめ
PowerShellを活用すれば、Active Directoryのグループメンバーを簡単に一覧取得・CSV出力することが可能です。部署単位の確認、棚卸し、セキュリティ監査、定期レポートなどにも応用できます。複数グループの一括処理や属性の柔軟な指定により、業務に合わせた出力が実現できます。