【发布时间】:2020-05-26 12:25:18
【问题描述】:
我有一个将包上传到 Octopus 的脚本,我正在使用增量压缩,但出现以下错误:无法处理参数“DeltaCompression”上的参数转换。无法将值“System.String”转换为类型“System.Boolean”。 我在推送调用中使用 Delta Compression,我已将 $DeltaCompression 设置为 bool 类型,所以我不确定为什么它在失败消息中说将字符串转换为布尔值。有人可以显示什么是错误的或解决这个问题吗?谢谢。
代码:
#Function to push packages to Octopus
function PushPackage {
param(
[string]$OctopusUri,
[string]$ApiKey,
[string]$Package,
[bool]$DeltaCompression
)
try{
$tries=1
do
{
Write-Host "Pushing $Package to Octopus"
& $OctoExePath push --package $Package --server $OctopusUri --apiKey $ApiKey --use-delta-compression $DeltaCompression --logLevel 'verbose'
$tries++
}until($LASTEXITCODE -eq 0 -or $LASTEXITCODE -eq $null -or $tries -gt 5)
}
catch{
$failMessage = "$($_.Exception.ToString()).$($_.InvocationInfo.PositionMessage)"
Write-Host "PUSH PACKAGE Exception--------- $failMessage"
}
}
$Package = "C:\temp\OctoTest\MyTestPackage.1.0.0.zip"
$OctoExePath = "C:\Users\QVL6\Downloads\OctopusTools.7.3.7.win-x64\octo.exe"
$DeltaCompression = "$false"
$ApiKey = "API-CRW9JBMJG8Z6ONIOATU16PVVV5E"
PushPackage $OctopusUri $ApiKey $Package $DeltaCompression
【问题讨论】:
-
当您调用
PushPackage函数时,我没有看到您将任何值设置为$DeltaCompression。这意味着您正在发送$null(也用于参数$ApiKey) -
嗨@Theo,对不起,我已将这两个变量添加到我的代码中,不知道它们是如何被省略的。
-
您正在通过用引号将布尔值 $false 字符串化。使用
$DeltaCompression = $false -
我认为它可能是 $false 周围的双引号,但我尝试不带引号但仍然没有喜悦@Theo
-
@hankey39 - 请切换到使用 splatting ...并在使用前显示 splat 包含的内容。另外,将您在问题中使用的修改代码。没有这一步,没人知道你到底用了什么……[grin]
标签: string powershell boolean octopus-deploy