【PowerShell】Active Directoryのグループメンバーを一括で出力・CSV保存

【PowerShell】Active Directoryのグループメンバーを一括で出力・CSV保存 PowerShell

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出力することが可能です。部署単位の確認、棚卸し、セキュリティ監査、定期レポートなどにも応用できます。複数グループの一括処理や属性の柔軟な指定により、業務に合わせた出力が実現できます。