2013-08-05 2 views
8

Durante l'esecuzione di comandi remoti come Enable-PsSession, Invoke-command ecc., È necessario fornire le credenziali con tali comandi.Powershell Remoting con credenziali

Non desidero fornire le credenziali ogni volta che si esegue questo comando.

Inoltre, consente di memorizzare il nome utente nella variabile & utilizzando la variabile durante l'esecuzione del comando. Voglio farlo anche per la password. Potrei farlo?

Esempio:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential mydomain\administrator 

Così qui sto fornendo la password ogni durante l'esecuzione di questi comandi.

In che modo i comandi devono prendere automaticamente il nome utente & dalla variabile & qualche altro meccanismo?

risposta

13

Si può fare:

$cred = get-credential #fill you credential in the pop-up window 

e poi:

Invoke-Command -ComputerName mycomputer -ScriptBlock { Get-ChildItem C:\ } -credential $cred 

Ricordate che la password in $cred è facilmente recuperabili in chiaro!

2

PowerShell utilizzerà automaticamente le credenziali dell'utente che esegue la sessione di PowerShell, se non ne viene specificato esplicitamente.

Quindi, se si esegue PowerShell come utente con privilegi amministrativi sul computer remoto, non è necessario immettere le credenziali quando si eseguono i comandi.

È possibile creare un'attività pianificata con credenziali memorizzate per un account di servizio e consentire agli utenti (o solo a se stessi) l'accesso per eseguire l'attività.

http://blogs.technet.com/b/heyscriptingguy/archive/2011/01/12/use-scheduled-tasks-to-run-powershell-commands-on-windows.aspx

Oppure è possibile memorizzare le credenziali nella gestione delle credenziali di Windows, il che significa che stanno crittografato utilizzando il proprio utente di Windows.

https://gist.github.com/toburger/2947424

Tuttavia, con la soluzione di gestione delle credenziali, qualsiasi utente in grado di eseguire script nel vostro contesto sarà in grado di estrarre la password in chiaro.

Questo non è un problema, se si utilizza questo solo per te stesso, o se ogni amministratore che esegue gli script lo fa dal proprio contesto utente.

3

Criptare tutto. Crea un oggetto chiamando le informazioni decodificate come password. Usalo così:

read-host -assecurestring | convertfrom-securestring | out-file C:\localdrivespace\username-password-encrypted.txt 
$username = "domain\username" 
$password = cat C:\localdrivespace\username-password-encrypted.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password