如何在Chocolatey中传递包含斜杠的参数?

时间:2017-12-14 09:47:30

标签: powershell chocolatey

我正在尝试安装需要将密码传递给安装脚本的软件包。

choco install <mypackage> -d -s <mysource> -y --params "/username:<username> /password:<password>"

如果<username><password>包含正斜杠巧克力,则拆分参数并仅将该部分用于第一个斜杠。

如何在不将Chocolatey解释为参数列表的分隔符的情况下传递包含一个或多个斜杠的参数?

修改:

chocolateyinstall.ps1

$ErrorActionPreference = 'Stop'; # stop on all errors

$pp = Get-PackageParameters

$username = $pp['username']
$password = $pp['password']
Write-Host ("Credentials Username '{0}'" -f $username)
Write-Host ("Credentials Password '{0}'" -f $password)

#[do install stuff]

Powershell命令

choco install <packagename> v1.2.123.4 -d -s C:\\Users\\<foo>\\Desktop\\ -y --params "'/username:value' '/password:val/ue'"

输出

Running Get-PackageParameters
Parsing $env:ChocolateyPackageParameters and $env:ChocolateyPackageParametersSensitive for parameters
Adding package param 'username'='value' ''
Adding package param 'password'='val'
Adding package param 'ue'='True'
Credentials Username 'value' ''
Credentials Password 'val'

1 个答案:

答案 0 :(得分:1)

有很多关于在网站上使用包参数的文档:

https://chocolatey.org/docs/how-to-parse-package-parameters-argument

如果您按照那里的一些代码进行操作,最终会得到类似的结果:

$pp = Get-PackageParameters

Write-Host $pp['LICENSE']

如果您随后使用以下内容进行调用:

choco install <pkg_id> --params "'/LICENSE:val/ue'"

您将看到它正确输出

val/ue

这就是我认为你所追求的。

注意:那篇文章,这个答案假设你使用的是Chocolatey 0.10.8。

注意:这进一步假设您使用chocolatey-core.extension包 NOT 。它处理参数解析的方式与内置函数的处理方式略有不同。

为两个参数展开:

$pp = Get-PackageParameters

Write-Host $pp['LICENSE']

Write-Host $pp['PASSWORD']

并打电话:

choco install <pkg_id> --params "'/LICENSE:val/ue' '/PASSWORD:value/1'"

应输出

val/ue

然后

value/1