Obtenir des informations d'identification à l'aide de PowerShell

  1. Utilisation de Get-Credential pour obtenir des informations d’identification dans PowerShell
  2. Utilisation de la cmdlet Get-Credential sans invite pour obtenir des informations d’identification dans PowerShell
Obtenir des informations d'identification à l'aide de PowerShell

Les objets PSCredential sont un moyen créatif de stocker et de transmettre en toute sécurité des informations d’identification à divers services. De nombreuses cmdlets natives et tierces nécessitent des objets PSCredential sur de nombreuses commandes différentes. De plus, les informations d’identification sont un objet omniprésent dans Windows PowerShell.

Cet article explique comment utiliser la cmdlet Windows PowerShell Get-Credential et obtenir des informations d’identification sans aucune invite.

Utilisation de Get-Credential pour obtenir des informations d’identification dans PowerShell

Habituellement, pour créer un objet PSCredential, nous utiliserions la cmdlet Get-Credential. Ladite cmdlet est la manière la plus courante pour Windows PowerShell de recevoir des entrées pour créer l’objet PSCredential. Cet objet se compose principalement du nom d’utilisateur et du mot de passe.

Chaque fois qu’il est exécuté, il demandera soit dans la ligne de commande le nom d’utilisateur et le mot de passe, soit une boîte de dialogue contextuelle apparaîtra demandant les informations d’identification de l’utilisateur.

Utilisation de la cmdlet Get-Credential sans invite pour obtenir des informations d’identification dans PowerShell

Par exemple, nous travaillons sur un script automatisé qui s’exécute dans une tâche planifiée ou une partie d’un cadre d’automatisation plus puissant. Dans ce cas, personne n’utilise la console pour saisir un nom d’utilisateur et un mot de passe. Il est donc préférable de créer un objet PSCredential à partir de zéro.

Créer un objet PSCredential sans interaction implique un processus de chiffrement. L’objet PSCredential nécessite un nom d’utilisateur en texte brut et un mot de passe chiffré.

Pour chiffrer un mot de passe, nous devons convertir une chaîne standard en une chaîne sécurisée. Pour ce faire, nous utilisons la cmdlet ConvertTo-SecureString. Nous pouvons transmettre un mot de passe en texte brut à cette cmdlet, et comme il s’agit de texte brut, nous devons utiliser les paramètres -PlainText et -Force. Les deux paramètres indiquent que nous transmettons une chaîne de texte en clair sans exigence de confirmation.

$pass = ConvertTo-SecureString 'MySecretPassword' -AsPlainText -Force

Une fois qu’une chaîne sécurisée est créée, il est temps de créer l’objet PSCredential. Pour ce faire, nous pouvons utiliser la cmdlet New-Object pour définir un objet de System.Management.Automation.PSCredential. La classe PSCredential a un constructeur qui accepte le nom d’utilisateur en texte brut et un mot de passe de chaîne sécurisée que nous pouvons utiliser comme arguments.

$credential = New-Object System.Management.Automation.PSCredential ('user01', $pass)

Nous avons maintenant un objet PSCredential avec notre nom d’utilisateur en texte brut et notre mot de passe sécurisé enregistré dans une variable. Nous pouvons maintenant passer la variable $credential à plusieurs commandes nécessitant un paramètre $credential, ce qui fonctionnera très bien. Pour vérifier s’il a été créé avec le nom d’utilisateur et le mot de passe attendus, nous pouvons référencer la propriété UserName, affichant le nom d’utilisateur que vous avez utilisé précédemment.

Exemple de code :

$credential.Username

Production :

user01

Le mot de passe est crypté via une chaîne sécurisée, mais si vous lisez le mot de passe sur le même ordinateur et utilisateur connecté, nous pouvons utiliser la méthode GetNetworkCredential() pour voir le mot de passe en texte brut. Ajoutez donc GetNetworkCredential() à la fin de la variable $credential mais notez que vous ne connaîtrez pas le mot de passe imprimé sur la console une fois exécuté.

Exemple de code :

$credential.GetNetworkCredential()

Production :

UserName Domain
-------- ------
user01

Pour voir le mot de passe, vous devrez utiliser la propriété Password sur l’objet renvoyé par GetNetworkCredential(). Le mot de passe renvoyé doit être le même que celui que vous avez fourni au constructeur PSCredential.

Exemple de code :

$credential.GetNetworkCredential().Password

Production :

MySecretPassword

Maintenant que nous avons vérifié que la variable $credential contient à la fois notre nom d’utilisateur et nos mots de passe, nous pouvons utiliser la variable comme paramètre dans la cmdlet Get-Credential.

Get-Credential -Credential $credential
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn