2016-07-18 10 views
0

Ich brauche Hilfe mit sicheren Zeichenfolgen Ich verstehe, dass dieser Weg nicht sehr sicher ist. Aber das ist auf der Admin-Seite der Maschine. Allerdings will ich das Passwort im Klartext nicht für Admins sehen.Powershell Secure String Passwort mit der Taste auf jedem Rechner zu arbeiten

Ich habe diese Methode erfolgreich bekam mit diesem Skript zu arbeiten:

$securepasswordkey = "76492d1116743f0423413b16050a5345MgB8AG4ARgBHAGIAWABmAEgAOABZAEoAbQBCAGYAegBsAEYATwAyAHEAcgAHwAOAA2ADUANwA5AGUAYwA4ADQAMgA1ADUAYQBhAGQAOAA2ADQANgA3AGUAMgA1AGMAYQA5AGQANwAwAGIAMAAxAGYAZgBhAGQAMwBiADYAMgBmAGIANwA5ADcAZABiADMAZgAyAGMAMABhAGYAYwA1AGQAOQA3AGMAMAAzADcAMwAzAGMAMQA1ADQAOABjADkAMwBhADcAMQBlAGUAZQA4AGYANwA5ADEAYgA0AGIAYgA0ADgA" 
$key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43) 
$password = ConvertTo-SecureString -String $SecurePasswordKey -Key $key 
$username = "$domain\administrator" 
$cred = new-object -typename System.Management.Automation.PSCredential - argument $username, $password 

Die oben arbeitet erfolgreich das Passwort für das Verstecken. Aber jetzt versuche ich es ohne das Credential-Objekt zu erreichen und ich habe Probleme:

$Secure = "76492d1116743f0423413b16050a5345MgB8ADAATQA5ADAAQwBLAGIAKwBPAFEATwA2ADIASgBVADAAGIAZAAwADgAMwAzADIANQA0ADAAOQA0ADUAMgBhADMANgAyAGQANQA4AGUANwAyADgANABhAGIAOABjAGUAMgAyADAAYQBlADkAZgBlAGYAOQAxAGIAOQA=" 
$Key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43) 
$password = ConvertTo-SecureString -String $Secure -Key $key 
$sqlQuery | sqlplus -silent "USERNAME/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=database.host.net)(Port=1522))(CONNECT_DATA=(SERVICE_NAME=database.host.net)))" 

Antwort

0

Ihr Problem ist hier:

$password = ConvertTo-SecureString -String $Secure -Key $key 

Mit dieser Codezeile, die $password Variable enthält ein SecureString Objekt, keine Klartextzeichenfolge. Hier ist eine kurze Funktion, die eine Klartext-String aus einem SecureString Objekt zurückgibt:

# Return a SecureString as a String. 
function ConvertTo-String { 
    param(
    [Security.SecureString] $secureString 
) 
    $marshal = [Runtime.InteropServices.Marshal] 
    try { 
    $intPtr = $marshal::SecureStringToBSTR($secureString) 
    $string = $marshal::PtrToStringAuto($intPtr) 
    } 
    finally { 
    if ($intPtr) { 
     $marshal::ZeroFreeBSTR($intPtr) 
    } 
    } 
    $string 
} 

diese Funktion zu Ihrem Skript hinzufügen, und Sie können dies jetzt schreiben:

$password = ConvertTo-String (ConvertTo-SecureString -String $Secure -Key $key) 

Jetzt $password eine Ebene enthalten -Textzeichenfolge.