我正在使用Jenkins進行部署。我想運行一個複製一些文件的PowerShell腳本。我爲jenkins安裝了「Windows PowerShell」插件,它將執行PowerShell腳本。我的Powershell腳本如下所示jenkins無法在程序文件下執行powershell
param (
[string] $targetEnvironment,
[switch] $WhatIf,
[switch] $Compare)
try
{
#do smething here
}
catch
{
}
當我手動執行它時,此腳本工作正常。使用下面的命令插件的輸入窗口中運行該腳本但是當我得到錯誤
需要注意的是,如果我複製了「deploymentscript」文件夾「C:\ deploymentscript」然後更改插件的路徑窗口,那麼作業運行良好。 它不工作時,其下的程序文件執行
錯誤即時得到是
First time build. Skipping changelog.
[workspace] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\CODESC~1\AppData\Local\Temp\hudson2119904511537985474.ps1'"
At C:\Users\username\AppData\Local\Temp\hudson2119904511537985474.ps1:1 char:119
+ ... etaTaskar.ps1' -targetEnvironment demo
+ ~~~~~~~~~~~~~~~~~~
Unexpected token '-targetEnvironment' in expression or statement.
At C:\Users\username\AppData\Local\Temp\hudson2119904511537985474.ps1:1 char:138
+ ... getEnvironment demo
+ ~~~~
Unexpected token 'demo' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
Build step 'Windows PowerShell' marked build as failure
Finished: FAILURE
EDIT1
@petrik你是對的,在「程序文件(x86)」文件夾中的空間造成問題。解決方案是使用以下格式:
&("C:\Program Files (x86)\Jenkins\jobs\MyJob\workspace\crconfig\deploymentscript\Deploy.ps1") -targetEnvironment demo
並且工作正常。
現在基於文章here如果powershell scrit失敗我想讓Jenkin的工作也失敗, 所以我告訴Hudson調用PowerShell腳本窗體的窗口批處理任務。
powershell "& {&('C:\Program Files (x86)\Jenkins\jobs\MyJob\workspace\crconfig\deploymentscript\Deploy.ps1') -targetEnvironment $Env:EnvironmentParam; exit $lastexitcode }"
我不確定我是否真的需要這個在我的情況?
嘗試雙引號? – Engineer
我的猜測是,它不是它從'Program Files'運行的事實,而是它從一個有空格的目錄路徑運行的事實。如果你手動執行那個命令(整個命令就像詹金斯那樣)會發生什麼? – Petrik
另一種方法是執行如下操作:$ script ='c:\ Program Files(x86)\ Jenkins \ jobs \ MyJob \ workspace \ crconfig \ deploymentscript \ deploy.ps1';&$ script -targetEnvironment demo。 – Petrik