我正在尝试使用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字节的文件,并且事件查看器中没有事件。我不知道如何进一步排除故障!
编辑:我应该注意,我还尝试使用文件资源在本地复制文件,然后从那里安装它。可悲的是,这也得到了同样的结果。
答案 0 :(得分:7)
丹尼尔在Powershell.org论坛上能够为我解决这个问题。
如果您以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
}
}
答案 1 :(得分:1)
嗯,这里发生的是包安装(没有用p4vinst64.exe进行测试!所以,不确定为什么它说打包不能作为错误打开)但是因为你没有指定ProductID
值,安装结束时的验证失败。这是你看到的错误。 Package
资源不适合安装.exe软件包甚至没有ProductID表示为GUID的MSI。
您可以使用WindowsProcess
资源。