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>
Author: Marion Paul Kenneth Mendoza
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn