Vous devez exécuter la procédure depuis le serveur sur lequel le script sera exécuté et avec le compte qui va lancer le script.
Lancez une session powershell
De base, dans un script, vous pouvez convertir votre mot de passe et écrire sa clé dans un fichier.
Notez que la procédure ne concerne que le mot de passe. Vous ne saisissez pas le login à utiliser.
C'est le compte qui lance la procédure de cryptage du mot de passe qui est utilisé.
La clé de cryptage devra être utilisée dans un script lancé avec le même compte qui a crypté le mot de passe.
Si dessous la clé est écrite dans un fichier. De ce fait la procédure peut être exécuté par un compte de service administré (par exemple)
$masecurestring = ConvertTo-SecureString -AsPlainText "MonMotdepasseAconvertir" -force
$macle = $masecurestring | ConvertFrom-SecureString
$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
out-file -filepath "$varCheminRepertoireScript\MaCle.txt" -InputObject $macle #Ecriture du résultat dans le fichier MaCle.txt
Lien vers le fichier : cliquez ici
Avec la commande suivante, vous pouvez aussi générer une fenêtre dans laquelle il faudra saisir le login/mot de passe à sécuriser :
$credential = Get-Credential
Lien vers le fichier : cliquez ici
Entrez le login/mdp
Puis obtenez la clé du mot de passe qui est stocké dans une SecureString avec cette commande :
$credential.Password | ConvertFrom-SecureString
Lien vers le fichier : cliquez ici
Récupérez la clé :
Maintenant vous pouvez utilisez la clé dans vos script sur ce serveur. La clé correspond à votre mot de passe crypté.
Il vous faut stocker cette clé dans une variable en la convertissant au préalable avec la fonction ConvertTo-SecureString -String
$password = ConvertTo-SecureString -String "mot_de_passe_crypté"
Lien vers le fichier : cliquez ici
Exemple :
Maintenant créez un objet credential qui va stocker le couple login/mot de passe et qui pourra par la suite être utilisé dans le reste du script :
$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList ("MonLogin", $password)
Lien vers le fichier : cliquez ici
Cet objet créé, vous pouvez récupérer le mot de passe en clair ainsi :
write-host $creds.getnetworkcredential().Password
Lien vers le fichier : cliquez ici
Vous pourrez, par exemple, passer un login/mot de passe a des utilitaires tel que psexec :
psexec -u $creds.UserName -p $creds.getnetworkcredential().Password
Lien vers le fichier : cliquez ici
Ou utiliser directement l'objet credential dans vos scripts powershell :
gwmi -namespace "root\rsop\computer" -query "select * from RSOP_GPO" -computername $ip_context -credential $creds
Lien vers le fichier : cliquez ici
Article(s) précédent(s)