Flash info

"La connaissance ce n’est point la possession de la vérité, mais d’un langage cohérent."

Antoine de Saint Exupéry (1900-1944)

 
Accueil arrow Bibliothèque de scripts arrow Active Directory arrow Récupérer les OU dont l'héritage a été coupé
Récupérer les OU dont l'héritage a été coupé
Écrit par Arnaud Petitjean [MVP]   
22-11-2011

Il est facile avec la console GPMC d’identifier si l’héritage au niveau d’une OU a été coupé à cause de l’icône avec le point d’exclamation bleu.

ouin.png

 

 

 

En revanche il est beaucoup moins évident d’obtenir la liste de toutes les OU d’un annuaire Active Directory entier, a moins d’avoir du temps devant soi s’il était question de le faire à la main… Et encore une fois c’est dans un tel scenario que PowerShell se positionne en sauveur ! J

Heureusement pour nous, une OU possède un attribut particulier nomme GpOptions, il va donc etre aisé de filtrer sur cette propriété.

Pour ce faire, nous pouvons nous resservir d’un précédent script qui permet de récupérer la liste des OU et pour chacune d’elle vérifier la valeur de la propriété GpOptions.

Pour plus d'infos sur cette propriété , voir ce lien : How Core Group Policy Works

"The gPOptions attribute holds an integer value that indicates whether the Block Policy Inheritance option of a domain or OU is enabled (1) or disabled (0)."

Voici notre script :

foreach ( $OU in Get-ADSIOU)
{
    [ADSI]$OU | Where {$_.gpOptions -eq 1} | Select-Object -ExpandProperty Path
}

Bien que cela fonctionne, ce n’est pas la meilleure méthode car ADSI peut faire le travail pour nous; ainsi on en fait moins J et en plus c’est plus rapide car on ne fait plus qu’une seule requête auprès de l’AD. En effet, il nous suffit juste de changer le filtre de recherche, et voilà…

$objDomain = [ADSI]''
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
$objSearcher.Filter = '(&(objectCategory=organizationalUnit)(gPOptions=1))'

$objSearcher.FindAll() | Select-object -ExpandProperty Path
 

Dernière mise à jour : ( 22-11-2011 )
 
© 2017 PowerShell-Scripting.com