我正在尝试使用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
根据documentation,返回码1619表示无法打开MSI程序包。但是,当我手动登录到计算机并运行“ \\ nas \ share \ p4vinst64.exe / S / V / qn”时,安装将正常进行。
有人知道为什么这会失败吗?或者,有人可以告诉我如何解决此问题吗?我粘贴了从终端获得的所有错误信息,我的日志文件(p4v_install.log)是一个0字节的文件,并且事件查看器中没有事件。我不知道如何进一步解决它!
EDIT:我应该注意,我还尝试使用文件资源在本地复制文件,然后从那里安装它。不幸的是,结果还是一样。
Powershell.org论坛上的Daniel能够为我解决这个问题。
如果您以LocalSystem执行,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软件包或什至没有ProductID表示为GUID的MSI。