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

How can i pass a parameter containing a slash in Chocolatey?

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

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

如果 <username><password> 包含一个正斜杠 chocolatey 拆分参数并且只使用到第一个斜杠的部分。

如何传递包含一个或多个斜杠的参数,而不让 Chocolatey 将它们解释为参数列表的分隔符?

编辑:

巧克力安装。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'

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

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。

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

将其扩展为两个参数:

$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