2012-10-18 42 views
0

我想利用以下PowerShell的COM对象的Windows Installer

$无线=新对象-com WindowsInstaller.Installer

,如果我做了$无线|克我没有看到我想要的方法“产品” 我想迭代产品并显示系统上安装的所有项目的列表。

所以我想......让我做了$ wi.gettype()。invokemember

不是真的知道该怎么办$ wi.gettype()。invokemember( “产品”, “的InvokeMethod”) 或某种产量无法找到过载...

但现在我迷路了。我看过别处,但我不想创建一个完整的XML文件。我应该可以访问com对象方法。

回答

1
  1. 如果你正试图获得在Windows安装程序的列表,有一个天然的Powershell的方式,这是实际使用WMI幕后:

    Get-WmiObject Win32_Product 
    

    下面是Microsoft Scripting Guys一篇相关文章。

    看来这种方法has some issues,所以最好避免。

    当查询这个类,供应商的工作方式是,它实际上 在系统上执行每个MSI 包Windows安装程序“重新配置”为执行查询!

  2. 我尽力找到涉及WindowsInstaller com对象的解决方案,但都指向an article that no longer exists。这里是one on stackoverflow

  3. 另一种解决方法是尝试psmsi on CodePlex

+2

win32_product被困扰的问题,如查询强制包的协调。 – rismoney

+0

@rismoney:你是对的,我做了一个研究,并用另一个选项更新了答案。请检查一下。 – Neolisk