0

我正在尝试从 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 "$_"}
4

1 回答 1

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)

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

于 2013-10-17T20:23:57.080 回答