PowerShell Windows 安装程序 Com 对象

Mat*_*ttH 5 windows powershell installation comobject

我正在尝试使用 Powershell 修改 MSI 文件的内容。为此,我创建了一个 WindowsInstaller.Installer 实例,然后使用 $installer.OpenDatabase 和 $database.OpenView。类似的功能在 VBScript 中也可以使用,而且我已经看到在线示例似乎可以正常工作。

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

对于上述代码,我收到错误消息“方法调用失败,因为 [System.__ComObject] 不包含名为‘OpenDatabase’的方法。”

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

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

任何帮助将非常感激。

谢谢。

EBG*_*een 4

请参阅线程以获得一些指导。基本上,MSI COM 对象的实现方式使 PS 感到困惑。该线程中有一篇讨论该问题的博客文章的链接。

  • 抱歉回答我自己的问题。看起来至少有一种解决方法在这里实现:http://www.snowland.se/2010/02/21/read-msi-information-with-powershell/ (3认同)
  • 从该页面链接到的博客文章似乎已经消失(错误页面显示,Windows Live 空间不存在)。有人记得它所说的解决方法吗? (2认同)