使用 Powershell DSC 包资源安装 exe 获取返回代码 1619
-
20-12-2019 - |
题
我正在尝试使用 Powershell DSC 的 Package 资源来安装 exe...具体来说是 Perforce 的 P4V。这是我的代码:
Configuration PerforceMachine
{
Node "SERVERNAME"
{
Package P4V
{
Ensure = "Present"
Name = "Perforce Visual Components"
Path = "\\nas\share\p4vinst64.exe"
ProductId = ''
Arguments = "/S /V/qn" # args for silent mode
LogPath = "$env:ProgramData\p4v_install.log"
}
}
}
运行此命令时,这是 Powershell 给我的错误:
PowerShell provider MSFT_PackageResource failed to execute Set-TargetResource functionality with error message: The return code 1619 was not expected. Configuration is likely not
correct
+ CategoryInfo : InvalidOperation: (:) [], CimException
+ FullyQualifiedErrorId : ProviderOperationExecutionFailure
+ PSComputerName : SERVERNAME
根据 文档, ,返回码1619表示MSI包无法打开。但是,当我手动登录到机器并运行“\ as\share\p4vinst64.exe /S /V/qn”,安装工作完美无缺。
有谁知道为什么会失败?或者,谁能告诉我如何解决这个问题?我粘贴了从终端获得的所有错误信息,我的日志文件 (p4v_install.log) 是一个 0 字节文件,并且事件查看器中没有任何事件。我不知道如何进一步解决这个问题!
编辑:我应该注意,我还尝试使用文件资源在本地复制文件,然后从那里安装它。可悲的是,这也得到了同样的结果。
解决方案
丹尼尔在 Powershell.org 论坛能够帮我解决这个问题。
如果您执行以下命令,P4V InstallShield 安装包装程序会将 MSI 文件放入错误的路径 本地系统.
我已经成功开发了一个有效的配置,见下文。关键是这里的 /b 开关,它将 MSI 文件放入定义的位置。我已经添加 ALLUSERS=1
让所有用户都可以看到快捷方式 REBOOT=ReallySuppress
以避免突然重启(否则会发生)。
Configuration PerforceMachine
{
Package P4V
{
Ensure = "Present"
Name = "Perforce Visual Components"
Path = "C:\My\p4vinst64.exe"
ProductId = ''
Arguments = '/b"C:\Windows\Temp\PerforceClient" /S /V"/qn ALLUSERS=1 REBOOT=ReallySuppress"' # args for silent mode
}
}
其他提示
好吧,这里会发生什么是安装了包装(尚未使用p4vinst64.exe测试!所以,不确定它为什么它不能作为错误打开包),但由于您没有指定生成的
ProductID
值,验证在安装结束时失败。这是您看到的错误。Package
资源对于安装.exe软件包,甚至是MSIS,没有ProductID作为GUID。
可以使用WindowsProcess
资源。
不隶属于 StackOverflow