Obtenir des informations d'identification à l'aide de PowerShell
-
Utilisation de
Get-Credential
pour obtenir des informations d’identification dans PowerShell -
Utilisation de la cmdlet
Get-Credential
sans invite pour obtenir des informations d’identification dans 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn