删除组的所有用户

时间:2013-10-17 12:09:56

标签: powershell membership

我正在尝试从csv和每个组中获取一个组列表,删除它所有的组成员以及它所属的所有组(嵌套)并且我很难过。我的代码部分工作,如果我在csv中只有3或4个组,它似乎删除了所有成员资格,但是当我在csv中有150个组时,它只会执行第一对。我也尝试将“get-content”更改为“import-csv”而没有运气。我很难过。有任何想法吗?我的尝试列在下面;

get-content "$executingScriptDirectory\groups.csv" | foreach{Get-ADGroupMember -Identity "$_.Name" |  Remove-ADPrincipalGroupMembership -MemberOf "$_" -Confirm:$false }


Groups = import-csv "$executingScriptDirectory\groups.csv"

ForEach ($Group In $Groups) {get-adgroupmember | remove-adgroupmember -identity $Group -members "$_"}

1 个答案:

答案 0 :(得分:0)

这是一个允许您使用System.DirectoryServices.AccountManagement来解决问题的解决方案。它允许您递归地查找组的所有用户。我在W2K12服务器上的PowerShell 3.0上测试它。

Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$ctx = New-Object System.DirectoryServices.AccountManagement.PrincipalContext  ([System.DirectoryServices.AccountManagement.ContextType]::Domain, "localhost:389", "OU=MonOU,DC=SILOGIX-ESS01,DC=local", "administrator", "administratorPwd")
$theGroup = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($ctx, "MonGrp")
$users = $theGroup.GetMembers($true)

使用PowerShell 2.0使用System.DirectoryServices和LDAP_MATCHING_RULE_IN_CHAIN也存在另一种解决方案。如果您不能使用此解决方案,我会发布它。

相关问题