是否可以在管道常规脚本中直接调用PowerShell命令?在Jenkins中使用自定义作业时,我可以使用PowerShell插件调用该命令。但是在groovy脚本中没有片段可以使用它。
我也尝试过,sh()但似乎此命令不允许在命令中包含多行和注释。
sh()
要从Groovy脚本调用PowerShell脚本,请执行以下操作:
bat
errorlevel
EXIT 1
FAILED
$LastExitCode
自从具有Powershell插件1.4的Jenkins 2.207以来,我已将所有调用替换为正式的powershell管道命令。我现在建议使用它。
对于这个po,我写了一个简单的方法,可以集成到任何管道脚本中:
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:与Server 2016和Win10配合使用非常好。[/编辑] [编辑]我添加了’%’掩码[/编辑]
然后,您可以在管道脚本中像这样调用脚本:
stage ('Call Powershell Script') { node ('MyWindowsSlave') { PowerShell(". '.\\disk-usage.ps1'") } }
最好的做法是,您CmdLet不必在脚本中进行调用即可调用脚本,这是最佳实践。
CmdLet
调用ps1来定义CmdLet,然后调用CmdLet
PowerShell(". '.\\disk-usage.ps1'; du -Verbose")
.
&