タイトルにあるように、ユーザーがメンバーになっているすべてのグループを見つけ、そのメンバーシップをすべてのグループから削除する必要があります。
私はこれを試しました:
get-adgroup -filter * | where {(Get-ADGroupMember $_ | foreach {$_.PrimarySmtpAdress}) -contains "[email protected]"}
しかし、それは何も返しません(ただし、いくつかのアイテムは返却する必要があります)
削除する方法が見つからなかったので、誰かがこれを実行するコードの例を教えてもらえますか?
セキュリティグループについて話している。
すべてのバックリンクが配置されていると仮定すると、これはpowershellで簡単に実行できるシンプルな3ステップのプロセスです。
# 1. Retrieve the user in question:
$User = Get-ADUser "username" -Properties memberOf
# 2. Retrieve groups that the user is a member of
$Groups = $User.memberOf |ForEach-Object {
Get-ADGroup $_
}
# 3. Go through the groups and remove the user
$Groups |ForEach-Object { Remove-ADGroupMember -Identity $_ -Members $User }
各グループのユーザーの削除を手動で確認したくない場合は、-Confirm:$false
を使用します。
Remove-ADGroupMember -Identity $_ -Members $User -Confirm:$false
簡単に回復できるようにするために、削除したすべてのグループメンバーシップをログに記録したいと思うかもしれません。削除する前に、グループDNをテキストファイルに出力して、問題のユーザーを特定します。
$LogFilePath = "C:\BackupLocation\user_" + $User.ObjectGUID.ToString() + ".txt"
Out-File $LogFilePath -InputObject $(User.memberOf) -Encoding utf8
これにより、すべてのグループがファイルに書き込まれ、簡単で信頼性の高いロールバックが可能になります