Так как объекты играют центральную роль в 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 отображает по умолчанию, пользователь должен будет сам отформатировать вывод. Это можно сделать при помощи командлетов форматирования.