【发布时间】:2018-11-28 06:22:50
【问题描述】:
如果我需要将一个布尔值从 VSTS 传递到 powershell 脚本以在 CD 中进行部署。我收到以下错误:
无法将值“System.String”转换为类型“System.Boolean”。布尔参数只接受布尔值和数字,例如 $True、$False、1 或 0。
我将 VSTS 中的参数作为内联脚本 -ClientCertificateEnabled "$(ClientCertificateEnabled)"
并通过parameters.local.jason 使用replacetoken.ps1 复制template.json 中的值。
parameters.local.jason
"clientCertEnabled": {
"value": "{{clientCertificateEnabled}}"
},
replacetoken.ps1
[Parameter(Mandatory=$true)]
[bool]
$ClientCertificateEnabled
$depParametersFile = $depParametersFile.Replace('{{clientCertificateEnabled}}', $ClientCertificateEnabled)
deploy.ps1
[Parameter(Mandatory=$true)]
[bool]
$ClientCertificateEnabled
template.json
"clientCertEnabled": {
"type": "bool",
"defaultValue": true,
"metadata": {
"description": "Indicates if client certificate is required on web applications on Azure."
}
}
"clientCertEnabled": "[parameters('clientCertEnabled')]"
【问题讨论】:
-
我不知道 VSTS,但错误似乎很简单。您使用的值
"0"或"1"被视为字符串,而0 1 $true $false是 Powershell 中的实际布尔值(请注意缺少引号)。请包含您的代码,以便我们确定错误发生的位置。 -
它背后的代码看起来像什么?
标签: powershell azure-devops azure-pipelines-release-pipeline