Trouvez les directeurs de security étrangers orphelins et supprimez-les des groupes

Nous avons un domaine Windows 2008 R2 avec plusieurs fiducies sortantes. Dans ce domaine, nous ajoutons les users des domaines approuvés aux groupes de security locaux du domaine. Il semble que certains ou tous les counts supprimés des domaines étrangers restnt dans les groupes après la suppression (du domaine d'origine), laissant un SID dans le groupe qui ne peut pas être résolu.

Quelle est la façon la plus simple de find de tels counts et de les supprimer des groupes?

Je n'ai pas de script à scope de main. Mais personnellement, je ferais quelque chose comme ça.

  1. Enumérer des objects dans le cn = foreignsecurityprincipals, dc = doamin, dc = com container pour créer une list de SOP FPO
  2. Utilisez un file batch pour itérer à travers chacun et faites un psgetsid.exe (sysinternals) contre SID pour voir s'il résout. 0 signifie pouvoir résoudre et -1 signifie indisponible ou peut-être même incapable de contacter le DC correct
  3. Si% errorlevel% est -1, écris ce "mauvais" SID à un autre file

vous pouvez passer par les SID signalés comme -1 pour voir si vous souhaitez vraiment supprimer le FPO représenté. La suppression du FPO va nettoyer n'importe quelle appartenance utilisée. Vous pouvez utiliser DSRM au script en supprimant le FPO plus tard si vous le souhaitez en utilisant une boucle for pour itérer le file txt.

Voici un script powershell pour supprimer ForeignSecurityPrincipal orphelin pour lequel le nom ne peut pas être résolu (ce qui signifie normalement que l'object original n'existe plus).

Mais d'abord, assurez-vous que si le nom de ForeignSecurityPrincipal ne peut être résolu, il n'est pas lié à un problème de communication avec d'autres domaines.

Si vous êtes sûr de vouloir supprimer tous ces principes, supprimez simplement le paramètre "-WhatIf" de la section Catch, sinon il ne fait qu'une simulation.

$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 } }