2017-03-02 164 views
0

我正在嘗試編寫腳本來查找屬於AD中特定OU中的一個或多個組的成員的禁用用戶。然後它將刪除所有禁用用戶的所有組。但我想要生成一個用戶列表,但名稱列表除外。假設我不想爲某些特定的殘疾用戶刪除組。刪除禁用用戶的組成員

$SearchBase = "OU=Disabled Users,DC=contoso,DC=com" 
$Users = Get-ADUser -filter * -SearchBase $SearchBase -Properties MemberOf 
$ExcludeUsers [email protected]("SM_82786dfdc96642ed9","SM_516a93b689334db1a") 
$Users = $Users | where-Object { $ExcludeUsers -notcontains $_.samaccountname } 
ForEach($User in $Users){ 
$User.MemberOf | Remove-ADGroupMember -Member $User -Confirm:$false 
} 

錯誤:

Remove-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null. Provide a valid value for the argument, and then try running the command again. 
At line:3 char:22 
+  $User.MemberOf | Remove-ADGroupMember -Member $User -Confirm:$false 
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidData: (:) [Remove-ADGroupMember], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.RemoveADGroupMember 

回答

0

好像你發現沒有任何組的用戶(域用戶不是memberof一部分)。使用類似Where-Object的東西來過濾掉空對象。例如:

$User.MemberOf | Where-Object { $_ } | Remove-ADGroupMember -Member $User -Confirm:$false 
+0

我已經試過但沒有運氣沒有任何反應 – Arbelac

+0

什麼都沒有發生?那麼沒有更多的錯誤? 'Remove-ADGroupMember'不會輸出結果...檢查用戶成員資格(使用'Get-ADUser'或AD控制檯..' $ user.memberof'仍然具有舊值) –

+0

我已檢查用戶。我仍然可以看到用戶組的成員 – Arbelac