Skip to main content

極客學校:使用PowerShell獲取計算機信息

極客學校:使用PowerShell獲取計算機信息

Geoffrey Carr

WMI及其較新的兄弟CIM都可用於管理您環境中的Windows機器。但是你知道它們之間的區別嗎?加入我們,我們一起來看看。

請務必閱讀本系列之前的文章:

  • 了解如何使用PowerShell自動化Windows
  • 學習在PowerShell中使用Cmdlet
  • 學習如何在PowerShell中使用對象
  • 在PowerShell中學習格式,過濾和比較
  • 學習在PowerShell中使用遠程處理

並且整個星期都要繼續關注本系列的其餘部分。

介紹

WMI代表Windows Management Instrumentation。 “儀表”一詞指的是WMI允許您獲取有關計算機內部狀態的信息,就像汽車中的儀表板儀器可以檢索並顯示有關汽車內部組件狀態的信息一樣。

WMI由一個存儲庫組成,該存儲庫包含表示可在您的計算機內管理的組件的類。我們的意思是因為WMI有一個Win32_Battery類並不意味著你的機器包含電池。然後可以使用與稱為WQL的SQL非常類似的查詢語言在本地或甚至跨網絡查詢這些類的信息。然而,眾所周知,WMI非常不可靠,主要是因為它基於RPC(遠程過程調用),它使用他們選擇進行通信的端口做一些瘋狂的事情。

從Windows 8和Server 2012開始,WMI正逐步淘汰,有利於公共信息模型或簡稱CIM。 WMI和CIM之間的唯一區別是它們使用的傳輸協議。雖然WMI使用遠程過程調用執行查詢,但CIM使用HTTP,這似乎產生了巨大的差異。在後端,他們仍在與同一信息庫交談。

使用WMI

通過WMI探索可用信息的最快捷最簡單的方法是獲取任何免費WMI對象瀏覽器的副本。我們喜歡這個。下載後,啟動它,您將有一個圖形界面來瀏覽WMI類。

如果要查找有關計算機磁盤配置的信息,請按Ctrl + F組合鍵以顯示搜索框,然後鍵入“logicaldisk”並按Enter鍵。

這將立即將您帶到Win32_LogicalDisk類。

在應用程序的下半部分,您可以看到我們有兩個類的實例。

一旦我們有了我們正在尋找的類,從PowerShell查詢它是直截了當的。

Get-WmiObject -Query “SELECT * FROM Win32_LogicalDisk”

我有一段時間沒有看到這種語法與人們喜歡使用新的參數化語法。

Get-WmiObject –Class Win32_LogicalDisk

如果要從網絡上的另一台計算機獲取信息,只需使用ComputerName參數即可。

Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper –Credential viperadministrator

使用CIM

請記住,CIM僅適用於Windows 8和Server 2012,向前推進這絕對是最佳選擇。

Get-CimInstance –ClassName Win32_LogicalDisk

使用Get-CimInstance時,還有-ClassName參數的製表符完成,這表明將繼續這是微軟努力的重點。

實際上,WMI是由Microsoft內部一個完全獨立的團隊開發的,但隨後被負責PowerShell的人員接管。他們注意到要清理留下的混亂WMI是非常困難的。為了彌補這種情況,他們試圖通過編寫使用WMI和CIM的封裝cmdlet來使WMI和CIM更具可用性。檢查cmdlet是否為包裝器的唯一方法是查看文檔。例如,Get-Hotfix cmdlet是Win32_QuickFixEngineering類的包裝器,如文檔中所示。

這意味著您可以使用Get-HotFix cmdlet而不是WMI查詢在遠程計算機上獲取修補程序。

Get-HotFix –ComputerName localhost

所以你有它。請記住,如果有專用的cmdlet,您將始終希望使用它,如果不存在cmdlet,則由CIM跟進。最後,如果所有其他方法都失敗了,或者您的環境中有舊機器,則需要使用WMI。這就是我現在所擁有的一切。明天見,以獲得更多PowerShell樂趣。

Link
Plus
Send
Send
Pin