2013-03-22 2 views
8

Ho bisogno di scrivere uno script PowerShell che posso eseguire su qualsiasi macchina per connettersi a un server. La crittografia della stringa sicura utilizza la macchina o l'utente. Una password sicura funziona su qualsiasi macchina nel dominio o può essere decifrata solo sulla macchina su cui è stata creata. Se è il secondo è lì per crittografare la password in modo che io possa eseguire lo script su qualsiasi macchinaPowershell Secure password per funzionare su qualsiasi macchina

risposta

9

Per lavorare su altri computer è necessario creare una chiave da utilizzare con i cmdlet ConvertTo-SecureString e ConvertFrom-SecureString.

PS C:\> $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) 
PS C:\>$StandardString = ConvertFrom-SecureString $SecureString -Key $Key 

http://www.leeholmes.com/blog/2006/06/01/securestrings-in-powershell/

Per impostazione predefinita, le cmlets SecureString utilizzare Data Protection API di Windows’ quando convertono il vostro SecureString da e verso un testo rappresentazione normale. La chiave di crittografia si basa sulle credenziali di accesso di Windows in modo che solo tu possa decrittografare i dati che hai crittografato. Se si desidera che i dati esportati funzionino su un altro sistema o separatamente l'account utente , è possibile utilizzare i set di parametri che consentono di fornire una chiave esplicita .

+0

quanto è sicuro avere la chiave nello script? – user1221996

+3

Non è così. Sarebbe come mettere la password in chiaro qui. –

0

Questa è una grande domanda. Here's a link to how to save your credential. Ho ottenuto questo set up e ho intenzione di provare la mia stringa di credenziali su un altro computer collegato con un altro account. Ti farò sapere il mio risultato.

Aggiornamento

avrei dovuto dire che non ha funzionato per me. Sono andato sulla macchina dell'altra persona che ha effettuato il login come loro. Ho le mie credenziali istituito in uno script chiamato Get-MyCred:

$username = 'Domain\MyName' 
$password = cat '\\server\share\securestring.txt' | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 

return $cred 

Quando eseguo la linea dove ottiene la password si ottiene un errore sulla macchina di altre persone.

ConvertTo-SecureString : Key not valid for use in specified state. 
At line:1 char:56 
+ Get-Content O:\BCKUP\MyScripts\Cred\securestring.txt | ConvertTo-SecureString 
+              ~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException 
+ FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand 

Ho persino ricevuto l'errore quando accedo a un altro computer con le mie credenziali.

+0

che sarebbe bello se si potesse farmi sapere Voglio solo uno script personalizzato che posso girare su alcune macchine per cambiare l'unità organizzativa e stava per usare Enter-PSSession DC1 -computerName -credentials utente get -adcomputer% computername% | Move-ADObject -TargetPath 'ou = test, dc = test, dc = com' – user1221996

+0

È possibile salvare la password in testo normale? Rendilo un file nascosto? –

+0

interessante ci deve essere via per fare questo non voglio rischiare di avere la mia password di amministratore in un testo normale. Grazie per avere uno sguardo però – user1221996