You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:27:15