我正在尝试使用PowerShell DSC安装Visual Studio 2013,但我遇到了一些问题,并希望你们能为我清理它。 DSC是否能够重新启动节点然后恢复VS的安装?有谁知道这个错误意味着什么? “已安装vs_ultimate.exe,但指定的ProductId和/或名称与包详细信息不匹配”
有没有人有更多具体尝试使用此方法安装.exe的示例?
有人如何找到ProductID?
有谁知道ReturnCode的确切语法?
任何帮助都会很棒!
答案 0 :(得分:8)
如果您的系统已安装该软件,则可以使用以下命令找到ProductID:
Get-WmiObject -Class Win32_Product | fl Name,Version,InstallDate,InstallSource,PackageName,IdentifyingNumber
示例输出:
Name : Dell OpenManage Systems Management Software (64-Bit)
Version : 7.3.0
InstallDate : 20131009
InstallSource : c:\Installs\OMSA\
PackageName : SysMgmtx64.msi
IdentifyingNumber : {7CB08DC5-EA02-4076-BA7D-AD7736A3DE71}
Name : Microsoft ASP.NET MVC 4 Runtime
Version : 4.0.40804.0
InstallDate : 20141111
InstallSource : C:\windows\TEMP\IXP000.TMP\
PackageName : AspNetMVC4.msi
IdentifyingNumber : {3FE312D5-B862-40CE-8E4E-A6D8ABF62736}
其中IdentifyingNumber是您应该在包资源中使用的GUID。上述Dell软件的示例:
package OMSA
{
Name = 'Dell OpenManage Systems Management Software (64-Bit)'
...
ProductId = '7CB08DC5-EA02-4076-BA7D-AD7736A3DE71'
Arguments = ...
}
答案 1 :(得分:2)
ProductId是MSI的ProductCode,您可以使用它 在Orca中打开MSI(Windows SDK的一部分)或者您可以安装 来自http://psmsi.codeplex.com的我的模块,并且如此:
get-msitable <yourmsi.msi> -table Property | where { $_.Property -eq "ProductCode" }
答案 2 :(得分:0)
错误表示您的Package资源的Name或ProductId与msi内容不匹配。
根据我的经验,找到两个值的最简单方法是使用Carbon powershell模块。
Install-Module Carbon
然后只需从powershell控制台运行:
msi "[path to your msi]"
注意:msi是Get-Msi的别名
示例:
PS C:\Users\gigi\Downloads> msi .\node-v6.10.0-x64.msi
ProductName ProductVersion Manufacturer ProductCode
----------- -------------- ------------ -----------
Node.js 6.10.0 Node.js Foundation 84f68739-3b44-4d36-abdb-2151a23c9c3d
将ProductName和ProductCode复制并粘贴到DSC包配置中,您就完成了。
答案 3 :(得分:0)
我写了一个PowerShell函数来查找产品信息
from pathlib import Path
import os
import time
pt = r"K:\Folder"
for filename in Path(pt).iterdir():
if filename.suffix == '.jpg':
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(filename)
print(str(filename) + "," + str(time.ctime(mtime)))