2016-07-18 4 views
0

J'ai besoin d'aide avec des chaînes sécurisées Je comprends que cette façon n'est pas très sécurisé. Mais c'est sur le côté admin de la machine. Cependant, je ne veux pas que le mot de passe apparaisse en clair pour les administrateurs.Powershell sécurisé mot de passe chaîne en utilisant la clé pour travailler sur n'importe quelle machine

J'ai avec succès cette méthode pour travailler avec ce script:

$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 

Celui ci-dessus fonctionne avec succès pour cacher le mot de passe. Mais maintenant, je suis en train d'accomplir sans l'objet des titres de compétence et je suis les questions ayant:

$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)))" 

Répondre

0

Votre problème est ici:

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

Avec cette ligne de code, la variable contient une $passwordSecureString objet, pas une chaîne de texte brut. Voici une courte fonction qui renvoie une chaîne de texte brut à partir d'un objet SecureString:

# 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 
} 

Ajouter cette fonction à votre script, et vous pouvez maintenant écrire ceci:

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

maintenant $password contiendra une plaine -text chaîne.