我在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
在scriptblock中,我通过它们的索引来引用参数,比如$args[1]。这些主要是字符串,当从Jenkins传递的参数中没有空格时,一切都可以正常工作。但是当我们假设${params.NAME}中有空格时,索引不能正常工作,因为空格将原始字符串分隔成多个参数,因此如果原始索引是$args[1],它不接受${params.DESCRIPTION}的值,而是接受${params.NAME}的一部分。
你知道如何避免这个问题,并采取在参数与原来的索引,即使它有空格在它?
1条答案
按热度按时间pqwbnv8z1#
${params.NAME}
)视为单个参数,请将它们括在"
中,在"..."
Groovy字符串的上下文中,必须将其转义为\"
因此: