我需要在 Jenkins 调用的函数中运行 powershell 脚本。调用此函数时,还包含另外两个参数/变量。这是我的代码示例:
powershell '''
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
'''
这会引发“错误响应”错误。请注意,如果我对变量中的值进行硬编码,则脚本可以正常工作。 我也尝试用 withEnv 包装脚本,但遇到了同样的问题:
withEnv(["varOne=${params.varOne}, varTwo=${params.varTwo}"]) {
powershell '''
$Headers = @{"ApiKey"="$env:myKey"}
$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers $Headers -Body $jsonBody
'''
}
最后,我知道如果我使用双引号而不是单引号,我可以成功调用这些变量
powershell """
some ps1 script
"""
但是,当我这样做时,它会说:
groovy.lang.MissingPropertyException: No such property: Headers
最佳答案
如果您要模板化变量,则需要 """
正如我在您删除的问题中所说的那样,但您需要在非模板化变量上转义 $
powershell """
\$Headers = @{"ApiKey"="$env:myKey"}
\$jsonBody = @{
varOne= '$env:params.varOne'
varTwo = '$env:params.varTwo'} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post -Uri "myUrl" -Headers \$Headers -Body \$jsonBody
"""
关于powershell - Jenkins中Powershell脚本中调用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68535108/