我正在尝试安装需要将密码传递给安装脚本的软件包。
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'
答案 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