Donnerstag, Mai 30, 2013

PowerShell: ConvertTo-SecureString : Schlüssel ist im angegebenen Status nicht gültig

Problem:
Seit 5.April 2013 bingen meine Powershellscripts mit encrypted Securestrings Fehlermeldungen beginnend mit:
ConvertTo-SecureString : Schlüssel ist im angegebenen Status nicht gültig.

Lösung:
Neuerdings sind die Schlüssel etwas länger. Also neuen Securestring erzeugen und encrypted Text im Script ersetzen.

Hier einige Beispielzeilen:

Cls
$S=convertto-securestring "HalloWelt" -asplaintext -force
#Sicherer wäre den Klartext zu vermeiden:
#$S=read-host -assecurestring
$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($S)
$Decoded=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($ptr);$Decoded
$Encrypted=convertfrom-securestring -securestring $s
$Encrypted.length;#Sollte neuerdings 324 sein
$A=(0..8)
0..8|%{$A[$_]=$Encrypted.substring(($_ * 36),36)}
"`$E=`$null";$A|%{"`$E+=""$_"""}
$E=$null;0..8|%{$E+=$A[$_]};$E
$S=convertto-securestring -string $E
$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($S)
$Decoded=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($Ptr);$Decoded

Keine Kommentare: