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