web-dev-qa-db-ja.com

PowerShell-すべてのユーザーのグループメンバーシップを検索し、ユーザーから除外する

タイトルにあるように、ユーザーがメンバーになっているすべてのグループを見つけ、そのメンバーシップをすべてのグループから削除する必要があります。

私はこれを試しました:

get-adgroup -filter * | where {(Get-ADGroupMember $_ | foreach {$_.PrimarySmtpAdress}) -contains "[email protected]"}

しかし、それは何も返しません(ただし、いくつかのアイテムは返却する必要があります)

削除する方法が見つからなかったので、誰かがこれを実行するコードの例を教えてもらえますか?

セキュリティグループについて話している。

5
Npv23g

すべてのバックリンクが配置されていると仮定すると、これは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

これにより、すべてのグループがファイルに書き込まれ、簡単で信頼性の高いロールバックが可能になります

8