查看对象结构

由于对象在 PowerShell 中扮演了如此重要的角色,因此存在几个用于处理任意对象类型的本机命令。 最重要的一个是 Get-Member 命令。

分析命令返回的对象的最简单方法是通过管道将该命令的输出传递到 Get-Member cmdlet。 Get-Member cmdlet 向你显示对象类型的正式名称及其成员的完整列表。 有时返回的元素数目可能非常巨大。 例如,一个进程对象可以拥有 100 多个成员。

使用以下命令,可以通过输出查看 Process 对象和页面的所有成员。

Get-Process | Get-Member | Out-Host -Paging
TypeName: System.Diagnostics.Process

Name                           MemberType     Definition
----                           ----------     ----------
Handles                        AliasProperty  Handles = Handlecount
Name                           AliasProperty  Name = ProcessName
NPM                            AliasProperty  NPM = NonpagedSystemMemorySize
PM                             AliasProperty  PM = PagedMemorySize
VM                             AliasProperty  VM = VirtualMemorySize
WS                             AliasProperty  WS = WorkingSet
add_Disposed                   Method         System.Void add_Disposed(Event...
...

我们可以通过筛选想要查看的元素,让这个冗长的信息列表更易于使用。 Get-Member 命令仅允许你列出属性成员。 属性的形式有数种。 cmdlet 使用值为 Properties 的 MemberType 参数显示类型的属性。 生成的列表仍会很长,但较之前更易于管理:

Get-Process | Get-Member -MemberType Properties
   TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount
Name                       AliasProperty  Name = ProcessName
...
ExitCode                   Property       System.Int32 ExitCode {get;}
...
Handle                     Property       System.IntPtr Handle {get;}
...
CPU                        ScriptProperty System.Object CPU {get=$this.Total...
...
Path                       ScriptProperty System.Object Path {get=$this.Main...
...

备注

MemberType 的允许值有 AliasProperty、CodeProperty、Property、NoteProperty、ScriptProperty、Properties、PropertySet、Method、CodeMethod、ScriptMethod、Methods、ParameterizedProperty、MemberSet 以及 All。

一个进程有 60 多个属性。 默认情况下,PowerShell 使用存储在以 .format.ps1xml 结尾的 XML 文件中的信息来决定某种对象类型的显示方式。 进程对象的格式设置定义存储在 DotNetTypes.format.ps1xml 中。

如果需要查看 PowerShell 默认显示的属性之外的属性,可使用 Format-* cmdlet 对输出进行格式设置。