什么 WMI class 在 MECM 上存储 Deployment Type 安装程序

What WMI class stores Deployment Type installation program on MECM

我需要通过 WMI classes 检索与 MECM 应用程序相关的数据,更具体地说,我需要获取应用程序部署类型属性 - 安装/卸载程序。

你能帮我吗,我可以使用什么确切的 WMI class 来获取这些信息。

感谢您的帮助。

不幸的是,这不是很容易获得信息 afaik,但在 powershell(或任何可以真正访问 wmi 的编程语言)的帮助下,它可以完成。

信息本身存储在 Class SMS_Application 中 属性 SDMPackageXML

现在,如果您查询它,您会注意到的第一件事是它可能是空的。那是因为它是一个懒惰的属性。要在 PS 中解决此问题,您必须在 wmi 对象上调用额外的 get()

如果你这样做(或者有一些工具可以显示所有惰性参数)你会注意到它 - 正如名字所暗示的那样 - 基本上是一个 XML 文档,它存储了你需要的深入信息里面。所以你必须从 XML.

中提取它

关于如何为单个应用程序执行此操作的一些示例代码是:

$app = Get-WmiObject -Class SMS_Application -Namespace "root\SMS\site_sitecode" -computer "your site server" -Filter "LocalizedDisplayName='your app name'"
$app.Get()
$installCMD = (([xml](($app).SDMPackageXML)).AppMgmtDigest.DeploymentType.Installer.InstallAction.Args.Arg | where {$_.Name -ieq "InstallCommandLine"}).'#text'
$uninstallCMD = (([xml](($app).SDMPackageXML)).AppMgmtDigest.DeploymentType.Installer.InstallAction.Args.Arg | where {$_.Name -ieq "UninstallCommandLine"}).'#text'

我不太擅长 xml 解析,所以可能有更好的方法,或者您可能不需要解析,但可以只对 xml 摘要进行字符串比较。只需从查看 SDMPackageXML 开始,然后您可能会了解如何根据自己的需要对其进行最佳分析。