約50人のユーザーのリストが属するセキュリティグループ(特に配布グループではない)のリストを生成するように求められました。
新しい行に各ユーザー名を含むユーザーのリストusers.txt
があります。ユーザー名と、ユーザーがメンバーになっているセキュリティグループのリストをコンマで区切って含むmembership.txt
を生成したいと思います。
これまでに作成したPowershellスクリプトは次のとおりです。
$users = Get-Content C:\users.txt
ForEach ($User in $users) {
$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof
$User + ',' + $getmembership | Out-File -Append c:\membership.txt
}
これはほぼ機能しますが、2つの問題があります。
OU=Security Groups,OU=City,DC=domain,DC=com CN=Senior Leaders
という形式で追加されていますが、実際に必要な情報はSenior Leaders
だけです。どうすれば余分な情報をすべて削除できますか?Get-ADUser
行を拡張します。
$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof | Get-ADGroup -Properties name | Where { $_.GroupCategory -eq 'Security' } | Select -ExpandProperty Name
これにより、グループのDNがGet-ADGroup
にフィードされて追加のプロパティが取得され、グループカテゴリでフィルタリングされ、(DistinguishedNameではなく)グループの名前が選択されます。