2013-10-17 44 views
0

我想从csv中获取组的列表,并为每个组删除其所有组成员以及它是(嵌套)成员的所有组,我很难过。我的代码部分工作,如果我只有3或4组在csv它似乎删除所有成员资格,但是当我在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 "$_"} 

回答

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另一种解决方案。如果您不能使用此解决方案,我会发布它。

+0

感谢您的代码,但我没有powershell 3.0只有2.0。 – user2402045

相关问题