是否有可能直接在管道groovy腳本中調用PowerShell命令?在Jenkins中使用自定義作業時,我可以使用PowerShell插件調用該命令。但是在groovy腳本中沒有使用這個片段。直接在jenkins管道中執行powershell命令
我也試過sh()
,但看起來這個命令不允許在命令裏面有多行和註釋。
是否有可能直接在管道groovy腳本中調用PowerShell命令?在Jenkins中使用自定義作業時,我可以使用PowerShell插件調用該命令。但是在groovy腳本中沒有使用這個片段。直接在jenkins管道中執行powershell命令
我也試過sh()
,但看起來這個命令不允許在命令裏面有多行和註釋。
要從Groovy的腳本調用的PowerScript:
bat
命令。errorlevel
)變量將被正確返回(EXIT 1
應導致FAILED
作業)。$LastExitCode
將被考慮。對於porpuse我寫這可以在任何管道,腳本集成一個小常規方法:
def PowerShell(psCmd) {
psCmd=psCmd.replaceAll("%", "%%")
bat "powershell.exe -NonInteractive -ExecutionPolicy Bypass -Command \"\$ErrorActionPreference='Stop';[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;$psCmd;EXIT \$global:LastExitCode\""
}
[編輯]我已經添加了UTF8 OutputEncoding:與服務器2016的偉大工程Win10 [/編輯] [編輯]我已經添加了 '%' 面具[/編輯]
在您的管道腳本,那麼你可以打電話給你的腳本是這樣的:。
stage ('Call Powershell Script')
{
node ('MyWindowsSlave') {
PowerShell(". '.\\disk-usage.ps1'")
}
}
與方法的最好的事情是,你可以撥打CmdLet
而不必爲此在腳本,這是最好的實踐。
呼叫PS1定義CmdLet
中,然後調用CmdLet
PowerShell(". '.\\disk-usage.ps1'; du -Verbose")
.
延遲您的腳本,以確保您的腳本在腳本返回錯誤代碼(應該是首選)時失敗,如果您不關心它,請使用&
。可以使用sh
命令是這樣的:
sh """
echo 'foo'
# bar
echo 'hello'
"""
評論在這裏的支持。
調用PowerShell腳本現在支持powershell
步驟,如Jenkins blog所公佈的那樣。
documentation提到它支持多行腳本。
嗨,不知道如果我在這個問題上遲了一點,我注意到默認情況下powershell支持使用-NoProfile插件,你知道有沒有辦法解決這個問題?我似乎無法運行我的管道,因爲我需要訪問PowerShell配置文件。 – jacmurphy50
在我的一個窗口節點上工作,但不在另一個窗口節點上。有什麼你需要做的操作系統來啓用它? –
sh命令將啓動一個bash會話,也可以使用不屬於PowerShell環境的windows slave。 您可以嘗試'sh',其中ps.exe''或'sh'在您的管道中回顯$ SHELL''。 請參閱:[鏈接](https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script) 請注意'ps.exe'必須安裝在windows slave上。 – elou