Active-Directory

PowerShell - 查找所有使用者的組成員資格並將其踢出

  • November 20, 2014

正如標題所說,我必須找到使用者所屬的所有組,並從所有組中刪除其成員資格。

我試過這個:

get-adgroup -filter * | where {(Get-ADGroupMember $_ | foreach {$_.PrimarySmtpAdress}) -contains "user1@domain.com"}

但它不返回任何東西(儘管有一些物品必須退回)

至於刪除我發現沒有辦法做到這一點,有人可以給我一個這樣做的程式碼範例嗎?

我在談論安全組。

假設所有反向連結都已到位,這是一個簡單的 3 步過程,可使用 powershell 輕鬆完成:

# 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

這會將所有組寫入文件並允許輕鬆可靠的回滾

引用自:https://serverfault.com/questions/601813