以下情况:您的AD组中有ForeignSecurityPrincipals。但是remove - adgroupmember不能删除它们,因为它不支持删除"foreignsecurityprincipal"。使用DOMAINSamAccountName方法也不可用,因为旧域不再存在。最重要的是,你不允许使用外部模块,因为该公司不需要外部模块。
我今天需要这个功能来完成一项大规模清理工作,不需要额外的模块,也不需要旧的AD可用,因为它已经被杀死了。没有发现什么,所以我开发了这个解决方案并分享给大家。您必须首先获得DOMAINSID,这应该很简单。我的例子使用-Server,因为"adminforest"与要修改的组的林中不同。它从给定的OU中搜索所有组,选择具有与DOMAINSID匹配的成员的所有组,然后从这些组中删除与DOMAINSID匹配的每个成员。不要忘记设置$WhatIf=$false,否则它会在"我们只测试"中运行。模式。
$Groups = Get-ADGroup -Server other.domain.local -Filter * -SearchBase "OU=Groups,OU=SubOU,OU=Subsidary,DC=OTHER,DC=DOMAIN,DC=LOCAL" -Properties *
$GroupsWithForeignMembers = @($Groups.Where({$_.member -like "*S-1-5-21-2631234548-991234592-3812345124*"}))
$WhatIf=$true
foreach ($Group in $GroupsWithForeignMembers) {
$MemberForeign= @((Get-ADGroup -Server bk.bwl.net -Identity $Group.SamAccountName -Properties member).member.Where({$_ -like "*S-1-5-21-2631234548-991234592-3812345124*"}))
foreach ($Member in $MemberForeign) {
"Removing $Member from $($Group.SamAccountName)" | Tee-Object -Append "GROUPS-cleanup.log"
Set-ADObject -Server other.domain.local -Identity $Group -Remove @{member=$Member} -Verbose -WhatIf:$WhatIf
}
}