如何向Chocolatey包传递数组参数?技术求助
Chocolatey传递数组类型参数的正确方法
Chocolatey的Get-PackageParameters默认不会自动将逗号分隔的字符串解析为数组,所以你当前的代码会把Test1,Test2当作单个字符串处理,而非独立的数组元素。下面提供两种可行的解决方案:
方法1:重复指定参数名(推荐)
直接在命令行中多次使用同一个参数名,Get-PackageParameters会自动将其识别为数组,无需额外处理:
命令行执行:
choco install -f .\amm.test.install.1.0.nupkg --params "/PowerUser:Test1 /PowerUser:Test2"
对应的脚本代码:
$pp = Get-PackageParameters # 检查参数是否存在 if (-not $pp['PowerUser']) { Write-Host "Provide user to proceed further." exit 1 } # 直接遍历数组 foreach ($user in $pp['PowerUser']) { Write-Host "Processing user: $user" }
方法2:逗号分隔字符串手动拆分
如果用户习惯用逗号分隔参数值,可在脚本中主动将字符串拆分为数组:
命令行执行(保持你原来的写法):
choco install -f .\amm.test.install.1.0.nupkg --params "/PowerUser:Test1,Test2"
对应的脚本代码:
$pp = Get-PackageParameters # 检查参数是否存在 if (-not $pp['PowerUser']) { Write-Host "Provide user to proceed further." exit 1 } # 将逗号分隔的字符串拆分为数组,同时去除元素前后空格 $powerUsers = $pp['PowerUser'] -split ',' | ForEach-Object { $_.Trim() } # 遍历数组 foreach ($user in $powerUsers) { Write-Host "Processing user: $user" }
两种方法都能实现数组参数的传递,推荐优先使用方法1,因为它更贴合Chocolatey的参数设计规范,避免手动拆分的额外逻辑。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

