📝

Active Directory:ユーザーの所属グループをCSV出力

2 min read

オンプレAD環境でユーザーのアクセス権を整理するために所属グループをCSV出力するPowerShellを書いてみた。

前提条件

  • ドメインコントローラーにコンソールかリモートデスクトップでログオンして操作する
  • 管理者の PC から操作する場合は、Active Directory モジュールが使えること

処理の中身

  • ユーザーの所属グループを3つまでCSV出力(アカウント名,所属グループ1,2,3)
Member.csv
"SamAccountName","MemberOf1","MemberOf2","MemberOf2"
"test-user01","CN=sec-member01,OU=testOU01,OU=User,DC=test,DC=com","CN=sec-member02,OU=group,DC=test,DC=com","CN=sec-member03,OU=group,DC=test,DC=com"
  • CN(セキュリティグループ名)のみに置換
    正規表現を使って、CNのみにする。
Member.csv
"SamAccountName","MemberOf1","MemberOf2","MemberOf3"
"test-user01","sec-member01","sec-member02","sec-member03"
  • MemberOf1,SamAccountNameで並び替え
  • Shift_JISでCSV出力

完成したスクリプト

Import-Module ActiveDirectory

# 表示が切れるのを防ぐためのに画面バッファサイズ変更
$bufferSize = (Get-Host).UI.RawUI.BufferSize
$windowSize = (Get-Host).UI.RawUI.WindowSize
$bufferSize.Width = 1000
$bufferSize.Height = 1000
#$windowSize.Width = 120
#$windowSize.Height = 50
(Get-Host).UI.RawUI.BufferSize = $bufferSize
#(Get-Host).UI.RawUI.WindowSize = $windowSize

# 取得したいOUを指定
# 例:"OU=User,DC=test,DC=com"
$GetOU = "OU=〇〇,DC=〇〇,DC=〇〇"

# 出力するファイル名を指定
$OutFile = "Member.csv"

#OU配下のユーザーの所属グループを3つまで書き出し
Get-ADUser -Filter * -SearchBase $GetOU -SearchScope Subtree -Properties MemberOf |
 Select-Object SamAccountName,@{L="MemberOf1"; E={$_.MemberOf[0]}},`
                    @{L="MemberOf2"; E={$_.MemberOf[1]}},`
                    @{L="MemberOf3"; E={$_.MemberOf[2]}} |
 Export-Csv $OutFile -Encoding Default

# 不要な文字を削除 (CNのみに置換)
$(Get-Content $OutFile) |
 ForEach-Object {$_ -replace("CN=(.*?),.*?(?=`")",'$1')} |
 Out-File $OutFile -Encoding default

# MemberOf1,SamAccountNameで昇順の並び替え
# Shift_JISでCSV出力
$CSVDate = Import-CSV $OutFile -Encoding Default
$CSVDate | Sort-Object -Property MemberOf1,SamAccountName |
 Export-Csv $OutFile -Encoding Default -NoTypeInformation

これも一旦CSVに出力して、不要な文字を削除してから並び替えしてるので、スマートじゃないけど、とりあえず欲しい情報をとれた。

参考

https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-aduser?view=windowsserver2019-ps

関連スクリプト

https://zenn.dev/8chikuwa3/articles/9d4d23db5117ca

Discussion

ログインするとコメントできます