如何顯示 PowerShell 物件的所有屬性

有關尋找 Windows 機器及其組件(例如網路、應用程式和服務)的資訊,有一些要求。通用資訊模型 (CIM) 是一種開放標準,用於操作這些組件及其資訊。
微軟在 CIM 上實現了自己的標準,稱為 Windows 管理工具 (WMI),用於查詢和操作計算機、服務和網路資訊。
使用 Get-WmiObject
顯示 PowerShell 對象的所有屬性
Get-WmiObject
命令是一個強大的工具,特別適用於系統管理和管理任務。它允許訪問 Windows 管理工具 (WMI) 數據,其中包含有關系統的大量資訊,例如硬體詳細資訊、安裝的軟體、網路配置等。
Get-WmiObject
的一個鮮為人知但強大的功能是使用 -List
參數。此選項使用戶能夠檢索指定命名空間中的所有 WMI 類的列表。
Get-WmiObject -List
的基本語法為:
Get-WmiObject -List [-Namespace <String>] [-ComputerName <String>]
主要參數包括:
-Namespace <String>
:指定 WMI 倉庫命名空間。默認為root\cimv2
,其中包含大多數常用的 WMI 類。-ComputerName <String>
:針對遠程計算機。沒有此參數時,命令在本地機器上運行。
因此,Windows 系統管理過程變得更加簡單。讓我們使用 Get-WmiObject
命令檢查可用的類。
Get-WmiObject -List
此命令將輸出您本地計算機的默認命名空間中所有可用的類。默認命名空間是 Windows 計算機中的 ROOT\cimv2
。
輸出:
可以指定不同於默認的命名空間(ROOT\cimv2
)。我們可以使用 -Namespace
參數來更改默認命名空間。
Get-WmiObject -Namespace <custom_namespace>
檢索類實例/對象資訊
使用 Get-WmiObject -Class
主要是為了檢索有關系統某一特定方面的詳細資訊。例如,查詢 Win32_Processor
類可提供有關處理器的資訊,而 Win32_OperatingSystem
顯示有關操作系統的詳細資訊。
此 cmdlet 的 -Class
參數允許用戶查詢 WMI 銷售庫中的特定類,這些類本質上是表示系統資訊的對象模板。這些類涵蓋從硬體詳細資訊到配置設置的廣泛數據。
語法:
Get-WmiObject -Class <String> [-Namespace <String>] [-ComputerName <String>]
主要參數包括:
-Class <String>
:指定所需資訊的 WMI 類。-Namespace <String>
:可選。指定 WMI 倉庫命名空間(默認為root\cimv2
)。-ComputerName <String>
:可選。將命令指向遠程計算機。
有數百個可用的 WMI 類。我們可以檢索給定類的資訊,如下所示。
Get-WmiObject -Class Win32_computersystem
在這裡,我們正在檢索 Win32_computersystem
類的資訊。它返回 Win32_computersystem
對象及其屬性,該屬性包含有關計算機系統的所有資訊,如下所示。
輸出中顯示的屬性數量有限。Win32_computersystem
對象包含比這些更多的屬性。
我們可以使用 Format-List
cmdlet 來顯示檢索對象的所有屬性。
使用 Format-List
Cmdlet 顯示屬性
Format-List
可以與另一個命令的輸出通過管道連接,以格式化結果。此 cmdlet 可以以可讀的格式顯示檢索到的 WMI 對象的指定或所有屬性。
語法:
Get-WmiObject -Class Win32_computersystem | Format-List -Property Name, Model, Manufacturer
讓我們為 Win32_computersystem
實例指定一些屬性。
Format-List [-Property <PropertyName[]>]
:將輸出格式化為列表。-Property <PropertyName[]>
:(可選)指定要顯示的屬性。如果省略,則顯示所有屬性。
輸出:
Get-WmiObject
返回 Win32_computersystem
對象的默認屬性。然後,輸出將通過管道運算符(|
)傳遞到 Format-List
命令。
我們可以將 -Property
參數傳遞給 Format-List
cmdlet。這將用給定的三個屬性過濾最終輸出。
有時,檢查指定 WMI 對象的所有屬性和值是重要的。在這種情況下,您需要使用 -Property *
來檢索所有可用的屬性及其值。
*
表示所有屬性。
Get-WmiObject -Class Win32_computersystem | Format-List -Property *
輸出:
輸出包含 Win32_computersystem
對象的所有屬性和可用值。我們可以省略上述命令中的 -Property
參數,並直接寫出來。
Get-WmiObject -Class Win32_computersystem | Format-List *
上述命令應顯示與上面相同的輸出。
結論
在這次對 PowerShell 的 Get-WmiObject
的探索中,我們揭示了它在 Windows 系統管理中的重要角色。-List
參數使得用戶能夠列舉所有 WMI 類,幫助識別相關數據來源。
專注於 -Class
,我們展示了它在檢索詳細系統資訊方面的精確性,以 Win32_ComputerSystem
為例。添加 Format-List
提升了輸出的可讀性,這在處理大量屬性列表時至關重要。
要加深您的知識,可以深入研究各種 WMI 類,例如 Win32_Processor
或 Win32_OperatingSystem
。將 Get-WmiObject
融入腳本中可以簡化系統管理任務。
作為一個多功能工具,Get-WmiObject
迎合了初學者和資深用戶,體現了它在 PowerShell 中對各種 IT 任務和自動化的重要性。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.