PowerShell: valider des credentials

Couramment, avec PowerShell, on a besoin de travailler avec des login/password.

Microsoft propose la commande standard Get-Credential, mais cette dernière ne consistera qu’à afficher un popup d’authentification. Dans ce dernier, il est possible de saisir n’importe quoi, aucune validation ne sera faite. Avec du recul, on se rend compte que c’est logique. Un credential peut être saisi quel que soit le mécanisme d’authentification et la commande n’a pas pour vocation de les valider (ou ne peut techniquement pas).

Toutefois, dans monde très coloré Microsoft (pour un blog SharePoint c’est normal ;)), on va la plupart du temps travailler avec des comptes Active Directory. Dans ce cas, ne vaudrait-il pas mieux permettre de valider dans la foulée ces Credentials ?

Pour vous aider, voici un script PowerShell qui permet de valider un objet de type PSCredential :

L’élément clé de ce script est l’utilisation de la classe PrincipalContext qui est construite avec l’option ContextType.Domain qui précise que le contexte est du type « domaine ». Il est aussi possible de spécifier le domaine si nécessaire.

En mettant en forme tout ceci, on peut créer une fonction PowerShell qui permet de valider la saisie de credentials et redemander le cas échéant à ressaisir le mot de passe :

Ce script peut s’utiliser de deux manières : soit en spécifiant un mot de passe dans les arguments, soit en spécifiant un simple nom d’utilisateur et le mot de passe sera demandé de manière dynamique :

Rating 4.00 out of 5
[?]