使用Powershell DSC安装可执行文件

时间:2013-12-19 17:47:30

标签: powershell powershell-v4.0 dsc

我正在尝试使用PowerShell DSC安装Visual Studio 2013,但我遇到了一些问题,并希望你们能为我清理它。 DSC是否能够重新启动节点然后恢复VS的安装?有谁知道这个错误意味着什么? “已安装vs_ultimate.exe,但指定的ProductId和/或名称与包详细信息不匹配”

有没有人有更多具体尝试使用此方法安装.exe的示例?

有人如何找到ProductID?

有谁知道ReturnCode的确切语法?

任何帮助都会很棒!

4 个答案:

答案 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)

引用Heath Stewart's comment

  

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)))