Просмотр структуры объектов

Поскольку объекты играют ключевую роль в PowerShell, существует несколько собственных команд для работы с произвольными типами объектов. Самое важное — это Get-Member команда.

Самый простой способ анализа объектов, возвращаемых командой, — передать выходные данные этой команды командлету Get-Member . Командлет Get-Member показывает официальное имя типа объекта и полный список его членов. Количество возвращаемых элементов иногда может быть просто огромным. Например, объект процесса может иметь более ста элементов.

Следующая команда позволяет просматривать все члены объекта 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 позволяет перечислять только элементы, которые являются свойствами. Существует несколько форм свойств. Командлет отображает свойства типа с помощью параметра MemberType со значением Properties. Результирующий список по-прежнему очень длинный, но более управляемый:

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 определяет, как отображать тип объекта с помощью сведений, хранящихся в XML-файлах с именами, заканчивающимися .format.ps1xml. Определение форматирования для объектов процесса хранится в DotNetTypes.format.ps1xml.

Если вам нужно просмотреть свойства, отличные от свойств, отображаемых PowerShell по умолчанию, можно отформатировать выходные данные с помощью Format-* командлетов.