2013-10-01 23 views
1

由於一些部署自動化的一部分,我試圖運行使用PowerShell遠程計算機上的可執行文件。 excutable需要作爲特定用戶運行,以便它可以連接到適當的數據庫來完成其工作。使用調用-WmiMethod運行在遠程計算機上的可執行文件作爲特定用戶

例如,Powershell的腳本上運行MACHINE1以用戶「組織\ TFSUser」。它需要以「Devel \ BuildServices」用戶身份運行Machine2上的可執行文件。我試圖使用Invoke-WmiMethod命令行啓動遠程服務器上的可執行文件,如下圖所示。這似乎起作用,它運行遠程計算機上的可執行文件,但使用匿名用戶登錄。我在日誌中看到的錯誤是System.Data.SqlClient.SqlException: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

$username = "devel\BuildServices" 
$password = cat Deploy\SecurePasswords\PasswordForBuildServicesAsSecureString.txt | convertto-securestring 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password 
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList ("C:\TeamCityDeployments\Importer\Importer.exe -pFile:C:\TeamCityDeployments\Importer\alphaParams.txt >> importer.log") -ComputerName "Machine2.devel" -Impersonation 3 -EnableAllPrivileges -Credential $cred 

要建立與密碼的憑據對象不符合規定here提示,我使用的是安全的弦。

在Invoke-WmiMethod,我提供參數 「-Impersonation 3」 作爲指定here。我的理解是,雖然模仿,我傳遞的用戶憑據。

誰能告訴我如何使用特定用戶的憑據在遠程機器上運行的可執行文件,這將啓動遠程過程。

+0

我還沒有真正使用過的調用,WmiMethod,它很可能是實現你想要的正確的方式,但我認爲你也可以做到這一點使用(新的PSSession /輸入-的PSSession )或Invoke-Command,因爲它們在調用它們時都具有憑據。 –

+0

試圖使用調用命令以及新PSession條命令。沒有任何區別,我仍然得到相同的匿名登錄錯誤。 – Chaitanya

+0

您是否在調用Invoke-Command時指定了身份驗證方法?您需要使用CredSSP,因爲您似乎有雙跳驗證問題。 檢查我的回答對這個問題,看看如何安裝和使用的CredSSP,這是相當簡單的。 http://stackoverflow.com/questions/15336336/running-batch-file-on-remote-computers-using-powershell-2-0/15336790#15336790 –

回答

0

嘗試使用New-PSSessionInvoke-Command以及CredSSP身份驗證,因爲您似乎有雙跳身份驗證問題。

檢查我的回答這個問題下面來看看如何設置和使用的CredSSP,這是相當簡單的。

Running batch file on Remote Computers using PowerShell 2.0

+0

BTW(可能不是一個問題在這裏),但新的PSSession需要WinRM服務,而WMI啓動幾乎瞬間。 – 2xMax

相關問題