Powershell 解析第二个参数时,带有PackageParams的Chocolate安装出错

Powershell 解析第二个参数时,带有PackageParams的Chocolate安装出错,powershell,chocolatey,Powershell,Chocolatey,巧克力v0.13.3(免费版) 我们正在为Install Shield msi安装程序创建巧克力包。 安装时,我们传入包参数(-params),以便在安装后配置一些应用程序配置文件 powershell cmd cinst Company.Package –Version 1.2.3 -myf -params "DBName=DB1;DBIP=123.4.5.6;DBSomethingElse=true" 所有参数都被正确传递并更新配置文件,但Chocolate抛出错误,表示第二个参数未重新电

巧克力v0.13.3(免费版)

我们正在为Install Shield msi安装程序创建巧克力包。 安装时,我们传入包参数(-params),以便在安装后配置一些应用程序配置文件

powershell cmd

cinst Company.Package –Version 1.2.3 -myf -params "DBName=DB1;DBIP=123.4.5.6;DBSomethingElse=true"
所有参数都被正确传递并更新配置文件,但Chocolate抛出错误,表示第二个参数未重新电离,导致安装失败

错误:术语“DBIP=123.4.5.6”未被识别为cmdlet的名称

巧克力店

Install-ChocolateyInstallPackage @packageArgs
if ( $null -ne $env:chocolateyPackageParameters ) 
{
  Invoke-Expression "& $( Join-Path $toolsDir 'Configuration.ps1' ) $($env:chocolateyPackageParameters)"
}
在tools/Configuration.ps1中,我们像这样拆分参数

$(ConvertFrom-StringData -StringData $env:chocolateyPackageParameters.Replace( ";", "`n" ) ) 
我错过了什么

我知道有更好的方法来配置系统(puppet、chef…),但这就是我所有可用的atm

传递选项 首先,确保你把你的论点恰当地传递给巧克力。PowerShell.exe和cmd.exe处理引号的方式不同,因此我们建议
“'args here'”
-

您可以始终使用
--noop--debug
运行,以了解这些选项是如何传递到配置的,而不需要实际运行安装。你会发现巧克力在某些方面是非常冗长的

你的错误 看起来您在Configuration.ps1中的一个输入错误中发现了错误,这很好

您可能需要依赖(并将其下载到内部软件包存储库),因此您可以执行以下操作:

$pp=获取PackageParameters

对脚本的建议
如果您在脚本中使用此功能,建议您使用
choco-upgrade
-如果未安装软件包,则会进行安装,如果有更新版本,则会进行升级。HTH

用荷马·辛普森一家的名言来说,DOH!我在Configuration.ps1文件中有一个输入错误,走开回来我马上就注意到了=[。删除这个问题我会在chocolate-core中添加一个response.Get-PackageParameters和Get-AppInstallLocation.extension工作得很好。-ty