PowerShell Windows安装程序Com对象

PowerShell Windows安装程序Com对象,windows,powershell,installation,comobject,Windows,Powershell,Installation,Comobject,我正在尝试使用Powershell修改MSI文件的内容。为此,我创建了WindowsInstaller.Installer的实例,然后使用$Installer.OpenDatabase和$database.OpenView。类似的功能在VBScript中也可以使用,我在网上看到过一些似乎可以使用的示例 $installer = new-object -comobject "WindowsInstaller.Installer" $database = $installer.OpenDatabas

我正在尝试使用Powershell修改MSI文件的内容。为此,我创建了WindowsInstaller.Installer的实例,然后使用$Installer.OpenDatabase和$database.OpenView。类似的功能在VBScript中也可以使用,我在网上看到过一些似乎可以使用的示例

$installer = new-object -comobject "WindowsInstaller.Installer"
$database = $installer.OpenDatabase("C:\Temp\Setup.msi", 1)
对于上面的代码,我得到一个错误“方法调用失败,因为[System.\uuuComObject]不包含名为“OpenDatabase”的方法。”

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

任何帮助都将不胜感激


谢谢。

有关指导,请参阅文章。基本上,MSI COM对象的实现方式会混淆PS。该线程中有一个指向讨论它的博客文章的链接。

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

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

还有一个CodePlex项目,它包装了很多功能,可能很有用:

从该页面链接到的博客文章似乎已不存在(错误页面显示,Windows Live共享空间不存在)。有人记得它是怎么说的吗?很抱歉回答我自己的问题。看起来这里至少实现了一种变通方法:
$installer = new-object -comobject "WindowsInstaller.Installer"
$database = $installer.InvokeMethod("OpenDatabase","C:\Temp\Setup.msi", 1)