Ich habe ein Powershell-Skript, das ein Passwort aus einer Datei liest, das Passwort wurde "gesichert" mit einem generierten AES-Schlüssel. Es gibt drei Dateien in dem Verfahren verwendet
AES Key File Generation:
$KeyFile = "\\server\path\AES.key"
$Key = New-Object Byte[] 16
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($Key)
$Key | out-file $KeyFile
Passwort File Generation:
$PasswordFile = "\\server\path\Password.txt"
$KeyFile = "\\server\path\AES.key"
$Key = Get-Content $KeyFile
$Password = "[email protected]" | ConvertTo-SecureString -AsPlainText -Force
$Password | ConvertFrom-SecureString -key $Key | Out-File $PasswordFile
Script Das Passwortdatei Grabs und Wandelt zurück in Plain Text:
$User = "myuser"
$PasswordFile = "\\server\path\Password.txt"
$KeyFile = "\\server\path\AES.key"
$key = Get-Content $KeyFile
$MyCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
$PlainPassword2 = $MyCredential.GetNetworkCredential().Password
$PlainPassword2
Die Konvertierung zurück in den Klartext wird wirklich getan, nur so können wir veri fy, dass die Daten identisch mit denen sind, die ursprünglich erstellt wurden.
Wenn wir die Daten enthalten in $ PlainPassword2 anstelle des Sehens Sy $ Tem @ dmin anzuzeigen, wie zu erwarten ist, werden wir Sy @ dmin sehen.
Was können wir tun, um dies zu korrigieren?
ändern '" 'auf' ' 'in dieser Zeile:' $ Password = "Sy $ Tem @ dmin" | ConvertTo-Secure -AsPlainText -Force' –
Mathias - Wow ... Ich kann nicht glauben, dass ich das verpasst habe. Ich war so konzentriert auf das dritte Skript, dass ich die beiden nie gesehen habe. Das hat mein Problem komplett korrigiert. Danke. –
Was auch funktioniert, ist das $ -Zeichen zu entkommen mit einem Backtick http://ss64.com/ps/syntax-esc.html Es sieht so aus, als ob das @ Ihre nicht initialisierte "variable" $ tem beendet, die zu einem leeren String führt. –