2015-09-09 58 views
0

我需要能夠以不同的用戶身份遠程運行PowerShell腳本(通過Jenkins)。由於它將作爲詹金斯的工作執行,Get-Credential不適合我。下面是我創建的腳本,但它不起作用。如何以不同的用戶身份執行PS1文件?

$uname='domain\username' 
$pwd='password' 
$passw=Convertto-SecureString -String $pwd -AsPlainText -force 
$mycred=New-object -TypeName System.Management.Automation.PSCredential -ArgumentList $uname, $passw 

Invoke-Command -FilePath "C:\test_scripts\fetchquery.ps1" -Authentication default -Credential $mycred -computername localhost 
+0

這是一個複製和粘貼事故,把兩條線放在一起? '$ mycred = New-object .....'應該在它自己的行上。 – Matt

+1

定義「不起作用」。 –

回答

0

創建憑據對象:

$username = 'domain\username' 
$Password = 'password' | ConvertTo-SecureString -Force -AsPlainText 
$credential = New-Object System.Management.Automation.PsCredential($username, $Password) 

在你的代碼執行它在本地主機上,因此開始PowerShell會話使用保存的憑證:

Start-Process powershell -argumentlist '-executionpolicy','bypass','-file',"C:\test_scripts\fetchquery.ps1"' -Credential $credential 

並遠程運行腳本(不要使用本地主機)

Invoke-Command -Computername 'Computer' ` 
-FilePath C:\test_scripts\fetchquery.ps1 -ArgumentList PowerShell ` 
-Cred $Credential 
+0

嗨@Avshalom,感謝您修復腳本。它在本地運行時效果很好。但是,因爲詹金斯不允許任何彈出窗口,它會阻止腳本執行。我嘗試'-WindowStyle Hidden'到-ArgumentList,但它錯誤與以下內容:**參數集不能使用指定的命名參數解析** – Karthik

+0

Jenkins將構建標記爲Success,但eventviewer在系統日誌下有此錯誤:* *應用程序彈出:powershell.exe - 應用程序錯誤:應用程序無法正確啓動(0xc0000142)。點擊確定關閉應用程序**。任何想法如何我可以抑制這個小小的黑色命令窗口被盜取? - 謝謝。 – Karthik

0

試試這個:

Start-Process powershell -WindowStyle 'Hidden' -ArgumentList '-executionpolicy', 'bypass', '-file', $scriptFullName -Credential $C 
相關問題