重建存储库之前列出第三方 WMI 提供程序

重建存储库之前列出第三方 WMI 提供程序

在重建整个存储库之前,我正在寻找一些列出 WMI 第三方提供程序的 Powershell cmdlet/脚本。

有 GWMI cmdlet 列出了所有 WMI 对象,但我缺少类似“公司:”,然后我将使用过滤器列出非微软 WMI。

Get-WmiObject -List | fl *
...
PSComputerName   : MyComputer
Name             : __SystemClass
__GENUS          : 1
__CLASS          : __SystemClass
__SUPERCLASS     :
__DYNASTY        : __SystemClass
__RELPATH        : __SystemClass
__PROPERTY_COUNT : 0
__DERIVATION     : {}
__SERVER         : MyComputer
__NAMESPACE      : ROOT\CIMV2
__PATH           : \\MyComputer\ROOT\CIMV2:__SystemClass
Path             : \\MyComputer\ROOT\CIMV2:__SystemClass
Derivation       : {}
Methods          : {}
Scope            : System.Management.ManagementScope
Options          : System.Management.ObjectGetOptions
ClassPath        : \\MyComputer\ROOT\CIMV2:__SystemClass
Properties       : {}
SystemProperties : {__GENUS, __CLASS, __SUPERCLASS, __DYNASTY...}
Qualifiers       : {abstract}
Site             :
Container        :
....

有什么方法可以检测第三方 WMI 提供程序?感谢您的帮助。

答案1

考虑到 WMI 的构建和实现方式,你对神奇的解决方案有点迷茫。我可以帮你一些忙,但你仍然需要亲眼看看结果。本质上,你需要从提供程序列表开始,你可以使用以下代码获取这些提供程序:

$Providers = Get-WmiObject "__win32provider"

如果数组数量不足,请仔细查看提供程序名称。Microsoft 没有使用标准命名约定,因此您可以忘记使用“MSProvider”等有用名称进行过滤。

建议并要求第三方(但不是强制要求)为自己的命名空间创建提供程序。任何不在“CIMV2”中的内容都应突出显示并进行更仔细的检查。作为参考,您可以查看第三方如何注册 WMI 提供程序以及注册时需要哪些信息这里

上述代码返回的对象具有 CLSID 属性,该属性对应于 Windows 注册表中的条目。您可以循环遍历它们并查询注册表,看看是否有第三方向您可以用来识别它们的键添加了任何值。

祝您狩猎愉快。

相关内容