PowerShell 中的屬性 Property 與 ExpandProperty
Marion Paul Kenneth Mendoza
2022年5月31日
Windows PowerShell 主要集中在顯示和生成物件。這些物件由稱為屬性的特定細節支援。
本文將討論什麼是屬性並將它們與擴充套件屬性區分開來。
PowerShell 中的 Property
與 ExpandProperty
在解釋屬性和擴充套件屬性之間的區別時可能不是很清楚,所以讓我們舉一個例子來幫助我們進一步視覺化它。
讓我們通過執行下面的程式碼來獲取 Get-Process
命令的屬性。
示例程式碼:
Get-Process | Format-List -Property *
執行上述命令後,PowerShell 將生成與物件關聯的資訊集合結構。下面的輸出是 Get-Process
命令的許多屬性中的一些。
輸出:
Name : ApplicationFrameHost
Id : 13248
...
Modules : {System.Diagnostics.ProcessModule (ApplicationFrameHost.exe),
System.Diagnostics.ProcessModule (ntdll.dll), System.Diagnostics.ProcessModule
(KERNEL32.DLL), System.Diagnostics.ProcessModule (KERNELBASE.dll)...}
讓我們獲取上面的輸出屬性之一併進一步檢查它們。
示例程式碼:
Get-Process | Select-Object -Property Modules
輸出:
Modules
------
{System.Diagnostics.ProcessModule (ApplicationFrameHost.exe), System.Diagnostics.ProcessModule (ntdll.dll), System.D...
正如我們所見,Modules
屬性之一顯示為輸出;但是,它目前不可讀。上面 Modules
屬性中的資料放置在 ArrayList
中。
那麼,我們如何讓這個屬性更具可讀性呢?我們使用 ExpandProperty
引數擴充套件屬性。
ExpandProperty
引數用於檢視 PowerShell 物件的主要屬性的子屬性。PowerShell 生成一個多級結構來定義物件,即屬性和擴充套件屬性。
示例程式碼:
Get-Process | Select-Object -ExpandProperty Modules
輸出:
Size(K) ModuleName FileName
------- ---------- --------
84 ApplicationFrameHost.exe C:\WINDOWS\system32\ApplicationFrameHost.exe
<SNIP>
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn