2013-08-05 130 views
8

在運行像Enable-PsSession遠程調用命令,Invoke-command等,我們需要提供這些命令的憑據。PowerShell遠程與憑證

我不想在執行這些命令時每次都提供證書。

而且可以說我在執行命令中使用的變量存儲在變量&的用戶名。我也想爲密碼做這個。我可以這樣做嗎?

如:

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

所以在這裏我在執行這些命令提供密碼每次。

如何從命令&自動獲取用戶名密碼&其他一些機制?

回答

13

你可以這樣做:

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

然後:

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

請記住,在$cred密碼是明文輕鬆恢復!

2

如果沒有明確指定,PowerShell將默認爲運行PowerShell會話的用戶的憑據。

所以,如果你運行PowerShell的與遠程計算機上管理權限的用戶,您不必在運行命令時輸入憑據。

您可以做的是您可以使用存儲的憑據爲服務帳戶創建計劃任務,並允許用戶(或只是您自己)訪問以運行任務。

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

或者你可以存儲在Windows憑據管理器,這意味着它們正在使用您的Windows用戶加密證書。

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

但是與憑證管理解決方案,能夠在您的環境中運行腳本,任何用戶都能夠提取明文密碼。

這不是一個問題,但是,如果你只使用自己這一點,或者如果運行腳本每個管理員從自己的用戶卻可以做到這點。

3

加密所有內容。創建一個調用解密信息的對象作爲密碼。使用它這樣的:

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