PowerShell – Tester si un objet AD existe

Read article in english here.

Point d’attention sur le module AD

Lors de l’élaboration de scripting PowerShell autour d’Active Directory, il est souvent utile de savoir si un objet AD (utilisateur, ordinateur, groupe) est présent ou non.

Au préalable, il faut installer le module Active Directory en suivant l’article sur l’installation du module AD PowerShell.

Sur les dernières versions de PowerShell livrées avec Windows Server 2016 et 2019, la non eixstence d’un objet dans l’AD provoque une erreur qu’il est possible de gérer avec un try/catch.

Cependant le fonctionnement est différent sur les anciennes versions. La gestion des erreurs bloquantes en PowerShell étant parfois capricieuses, on pourrait tenter en ajoutant paramètre -ErrorAction Stop pour forcer l’arrêt… belle tentative mais cela ne fonctionne pas.

Cet article présente donc les différents méthodes afin tester l’existence d’un utilisateur dans un Active Directory avec PowerShell en fonction de la version.

Sur un contrôleur de domaine 2016/2019

Sur un contrôleur de domaine 2016/2019, il est possible d’utiliser la commande Get-ADUser (ou Get-ADComputer ,Get-ADGroup).

En cas d’erreur, une exception sera levée, il est donc possible de la positionner dans un try/catch :

Sur un contrôleur de domaine 2012 R2 ou précédent

Pour les anciennes versions (2012 R2 et précédents), la commande Get-ADUser (Get-ADComputer,Get-ADGroup,etc.) ne lève pas d’erreur d’exécution, donc la partie catch n’est jamais exécutée. Cela pose donc un problème évident de non gestion des erreurs.

Pour pallier ce problème, vous pouvez utiliser l’une des méthodes ci-dessous.

Méthode 1 – caster en array

Caster la valeur retournée en array en utilisant la notation @() et vérifier la propriété  .Count. Si elle est égale à 0, l’utilisateur n’existe pas, sinon il existe :

Méthode 2 – caster en booléen

Caster la valeur retournée en booléen avec la notation [bool]. Un booléen peut être TRUE ou FALSE (respectivement représenté par 1 ou 0).

Laisser un commentaire

19 − 19 =

Fermer le menu