Pour sécuriser un mot de passe afin de l'utiliser dans des scripts Powershell, exécuter les étapes suivantes
Générer la clé avec des données aléatoires
PS > $key = (1..32 | ForEach-Object { Get-Random -Minimum 0 -Maximum 256 }) -as [byte[]]
Sauvegarder la clé dans un fichier caché qui devra être accessible par les scripts concernés
PS > [System.IO.File]::WriteAllBytes(".mykey", $Key)
Bien évidement, cette clé devra rester secrète
PS > Get-Content .mykey
¥l{}ƒ)’´Yrz’¸¯>°'ÈH'y¼ò/Àp↕Ž
Si la clé existe déjà, on initialise la variable $key de cette façon là
PS > $key = Get-Content .key -Encoding Byte
Première étape de sécurisation du mot de passe
PS > $monmotdepasse = "ceciestmonmotdepasse" | ConvertTo-SecureString -AsPlainText -Force
PS > $monmotdepasse
System.Security.SecureString
Une autre possibilité, en utilisant Get-Credential, permet de ne pas saisir son mot de passe dans la console PowerShell
Le résultat obtenu est une SecureString
PS > $monmotdepasse = Get-Credential
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
Une fenêtre Windows s'ouvre permettant de saisir ses identifiants

PS > $monmotdepasse.Password
System.Security.SecureString
Seconde étape de sécurisation du mot de passe
PS > $monmotdepassesecurise = $monmotdepasse | ConvertFrom-SecureString -Key $key
PS > $monmotdepassesecurise
76492d1116743f0423413b16050a5345MgB8AGMAZABXAHgAOQBWAHoAcgBXADUAcABJAEkAQQBVAGIAMQA1AGsAYgBuAHcAPQA9AHwAMAAxADcANABjADgAMQAwADMAOQBhADIAZQBkAGIAZAA3ADQAYgA2AGQAMQBhADEAZgAxADkAMwBjADEAOQA4ADUANABjADUANgBmAGUAMgA2ADMAMwAxADEAYQAwAGIAYwBkADUAOAAwADMAZAA4AGEAOQBhADcANQA4ADUAMQBiAGIAOQA2ADkANABiADAAMAA4ADgAMgA2AGEANgAyADAAZgBjADkAOQAwAGEAMQAyADcAZQA2AGEAMgBjAGUA
Si la variable $monmotdepasse a été initialisée via la commande Get-Credential, la variable $monmotdepassesecurise sera initialisée de cette manière
PS > $monmotdepassesecurise = $monmotdepasse.Password | ConvertFrom-SecureString -Key $key
Cette chaine de caractères devra être copiée/collée dans tous les scripts Powershell concernés.