PowerShell Windows安装程序Com对象
我正在尝试使用Powershell修改MSI文件的内容。为此,我创建了WindowsInstaller.Installer的实例,然后使用$Installer.OpenDatabase和$database.OpenView。类似的功能在VBScript中也可以使用,我在网上看到过一些似乎可以使用的示例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
$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)