PowerShell 中的屬性 Property 與 ExpandProperty

Marion Paul Kenneth Mendoza 2022年5月31日
PowerShell 中的屬性 Property 與 ExpandProperty

Windows PowerShell 主要集中在顯示和生成物件。這些物件由稱為屬性的特定細節支援。

本文將討論什麼是屬性並將它們與擴充套件屬性區分開來。

PowerShell 中的 PropertyExpandProperty

在解釋屬性和擴充套件屬性之間的區別時可能不是很清楚,所以讓我們舉一個例子來幫助我們進一步視覺化它。

讓我們通過執行下面的程式碼來獲取 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn