Windows-Server-2008-R2

在重建儲存庫之前列出第 3 方 WMI 提供程序

  • August 2, 2016

在我將重建整個儲存庫之前,我正在尋找一些列出 WMI 3rd 方提供程序的 Powershell cmdlet/腳本。

有 GWMI cmdlet 列出了所有 WMI 對象,但我缺少諸如*“Company:” 之*類的內容,然後我將使用過濾器列出非 Microsoft 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        :
....

有什麼方法可以檢測 3rd 方 WMI 提供程序?感謝您的任何幫助。

鑑於 WMI 是如何建構和實現的,您在一個神奇的解決方案上有點 SOL。我可以為你提供一些幫助,但你仍然需要關注結果。本質上,您需要從可以使用以下程式碼獲得的提供者列表開始:

$Providers = Get-WmiObject "__win32provider"

如果數組計數很短,則提供程序名稱。Microsoft 沒有使用標準命名約定,因此您可以忘記使用“MSProvider”之類的有用內容進行過濾。

建議並要求第 3 方為他們自己的命名空間創建他們的提供者,但不是必需的。任何不在“CIMV2”中的東西都應該突出並更仔細地觀察。作為參考,您可以在此處查看第 3 方如何註冊 WMI 提供程序以及這樣做時需要哪些資訊。

上面程式碼返回的對像有一個 CLSID 屬性,該屬性對應於它們在 Windows 系統資料庫中的條目。您可以遍歷它們並查詢系統資料庫,看看第 3 方是否將任何值添加到您可以用來辨識它們的鍵中。

狩獵愉快。

引用自:https://serverfault.com/questions/792631