Так как объекты играют центральную роль в Windows PowerShell, имеется несколько собственных команд, предназначенных для работы с объектами произвольного типа. Наиболее важной из них является команда Get-Member .

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

Чтобы увидеть все элементы объекта Process и сформировать страницу вывода таким образом, чтобы можно было просмотреть все элементы, введите:

PS> 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 командлета Get-Member задается Properties, командлет отображает свойства любого типа. Окончательный список все еще очень длинный, но он является немного более управляемым:

PS> 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 свойств. Причиной, по которой оболочка Windows PowerShell часто отображает для хорошо известного объекта лишь небольшое число свойств, является то, что отображение всех этих свойств связано с неизмеримо большим количеством информации.

Примечание.

Windows PowerShell определяет способ отображения объекта определенного типа, используя информацию, хранимую в XML-файлах, имена которых заканчиваются на .format.ps1xml. Данные форматирования для объектов процесса, являющихся объектами .NET System.Diagnostics.Process, хранятся в файле PowerShellCore.format.ps1xml.

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




Содержание