find孤立的外国安全主pipe并将其从组中删除

我们有一个具有多个传出信任的Windows 2008 R2域。 在此域中,我们将用户从受信任的域添加到域本地安全。 似乎从外部域中删除的部分或全部账户在删除之后(从原始域)保留在组中,在组中留下SID而无法parsing。

find这些帐户并将其从组中移除的最简单方法是什么?

我没有脚本方便。 但亲自我会做这样的事情。

  1. 枚举cn = foreignsecurityprincipals,dc = doamin,dc = com容器中的对象以构buildFPO SID列表
  2. 使用batch file遍历每个文件,并针对SID执行psgetsid.exe(sysinternals)以查看是否parsing。 0表示可以parsing,-1表示不可用,甚至可能不能联系正确的DC
  3. 如果%errorlevel%是-1,则将“坏”SID写入另一个文件

您可以通过报告为-1的SID来查看是否真的要删除所代表的FPO。 删除FPO将清除其使用的所有成员资格。如果需要,可以使用DSRM脚本删除FPO,使用for循环迭代txt文件。

这里是一个powershell脚本,用于删除名称无法parsing的孤立的ForeignSecurityPrincipal(通常意味着原来的对象不再存在)。

但是,首先要确保如果ForeignSecurityPrincipal的名称不能被parsing,则与其他域的通信问题无关。

如果您确定要删除所有这些主体,只需从Catch部分删除“-WhatIf”参数,否则只是进行仿真。

$objForeignSecurityPrincipalList=Get-ADObject -Filter {ObjectClass -eq 'foreignSecurityPrincipal'} foreach($objFSP in $objForeignSecurityPrincipalList) { Try { $null=(New-Object System.Security.Principal.SecurityIdentifier($objFSP.objectSid)).Translate([System.Security.Principal.NTAccount]) } Catch { Remove-ADObject -Identity $objFSP -WhatIf } }