PowerShell Windows安装程序Com对象

我正在尝试使用Powershell修改MSI文件的内容。 为此,我创build一个WindowsInstaller.Installer的实例,然后使用$ installer.OpenDatabase和$ database.OpenView。 类似的function在VBScript中工作,我看到在线样本似乎工作。

$installer = new-object -comobject "WindowsInstaller.Installer" $database = $installer.OpenDatabase("C:\Temp\Setup.msi", 1) 

对于上面的代码,我得到一个错误“方法调用失败,因为[System .__ ComObject]不包含名为”OpenDatabase“的方法。

 $installer = new-object -comobject "WindowsInstaller.Installer" $database = $installer.InvokeMethod("OpenDatabase","C:\Temp\Setup.msi", 1) 

如果我尝试使用$ installer.InvokeMethod我得到相同的错误“方法调用失败,因为[System .__ ComObject]不包含名为”InvokeMethod“的方法。

任何帮助将非常感激。

谢谢。

Solutions Collecting From Web of "PowerShell Windows安装程序Com对象"

看到这个线程的一些指导。 基本上MSI COM对象是以混淆PS的方式实现的。 有一个博客文章的链接,在该线程中讨论它。

最初接受的答案链接不再有效。

在评论中,JohnB发布了一个链接,其中有一个关于如何使用Powershell中的Windows安装程序的很好的例子。

还有一个CodePlex项目包装了很多功能,可能是有用的:
Windows Installer PowerShell模块