【发布时间】:2022-11-24 02:26:17
【问题描述】:
我在 Jenkins 管道中有一个阶段,我在其中调用我在容器中执行的 PowerShell 脚本,我这样称呼它:
stage('Processing') {
container('remote') {
sh "pwsh -file script.ps1 ${params.NAME} ${params.DESCRIPTION} ${params.PEOPLE}
}
}
在脚本中,我为远程会话做了一些准备,并使用此命令调用它
Invoke-Command -Session $RemoteSession -ArgumentList $parameters -ScriptBlock $ScriptBlock
提到的准备基本上是我向 args 添加另一个参数,我喜欢这样做
$parameters = @()
$parameters = $parameters + $args
$parameters += $var
在脚本块中,我通过索引引用参数,例如 $args[1]。这些主要是字符串,当从 Jenkins 传递的参数中没有空格时一切正常。但是当我们说 ${params.NAME} 中有一个空格时,但是索引不能正常工作,因为空格将原始字符串分隔成多个参数,因此如果原始索引是 $args[1],而不是接受${params.DESCRIPTION}的值,它接受了${params.NAME}的一部分。
你知道如何避免这个问题并使用原始索引接收参数,即使它有空格吗?
【问题讨论】:
标签: powershell shell jenkins