Get-Member
Получает свойства и методы объектов.
Синтаксис
Get-Member [[-Name] <string[]>] [-Force] [-InputObject <psobject>] [-MemberType {<AliasProperty> | <CodeProperty> | <Property> | <NoteProperty> | <ScriptProperty> | <Properties> | <PropertySet> | <Method> | <CodeMethod> | <ScriptMethod> | <Methods> | <ParameterizedProperty> | <MemberSet> | <Event> | <All>}] [-Static] [-View {<Extended> | <Adapted> | <Base> | <All>}] [<CommonParameters>]
Описание
Командлет Get-Member получает элементы (свойства и методы) объектов.
Чтобы задать объект, воспользуйтесь параметром InputObject или по конвейеру передайте объект командлету Get-Member. Для получения сведений о статических элементах (элементах класса, а не экземпляра) используется параметр Static. Чтобы получить элементы только определенных типов, например NoteProperties, следует использовать параметр MemberType.
Параметры
-Force
Добавляет в вывод встроенные элементы (PSBase, PSAdapted, PSObject, PSTypeNames) и создаваемые компилятором методы get_ и set_. По умолчанию командлет Get-Member получает эти свойства во всех представлениях, кроме представлений "Base" и "Adapted", но не отображает их.
В следующем списке описаны свойства, добавляемые при использовании параметра Force.
-- PSBase: исходные свойства объекта .NET Framework без расширения или адаптации. Эти свойства определены в классе объекта и перечислены в библиотеке MSDN.
-- PSAdapted: свойства и методы, определенные в расширенной системе типов Windows PowerShell.
-- PSExtended: свойства и методы, добавленные в файлы Types.ps1xml или с помощью командлета Add-Member.
-- PSObject: адаптер, преобразующий базовый объект в объект PSObject Windows PowerShell.
-- PSTypeNames: список типов объектов, описывающих объект, в порядке их специфичности. При форматировании объекта оболочка Windows PowerShell выполняет поиск типов в файлах Format.ps1xml в каталоге установки Windows PowerShell ($pshome). Она использует определение форматирования первого найденного типа.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-InputObject <psobject>
Задает объект, для которого командлет получает элементы.
Использование параметра InputObject отличается от передачи объектов командлету Get-Member с помощью конвейера. Различия заключаются в следующем.
-- При передаче коллекции объектов командлету Get-Member с помощью конвейера командлет Get-Member получает элементы отдельных объектов коллекции, например свойства целых значений в целочисленном массиве.
-- При использовании для передачи коллекции объектов параметра InputObject командлет Get-Member получает элементы коллекции, например свойства массива в целочисленном массиве.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-MemberType <PSMemberTypes>
Получает только элементы указанного типа. По умолчанию используется значение "All".
Допустимые значения этого параметра:
-- AliasProperty: свойство, определяющее новое имя существующего свойства;
-- CodeMethod: метод, ссылающийся на статический метод класса .NET Framework;
-- CodeProperty: свойство, ссылающееся на статическое свойство класса .NET Framework;
-- Event: указывает, что объект отправляет сообщение, чтобы уведомить о действии или изменении состояния;
-- MemberSet: заранее определенный набор свойств и методов, например PSBase, PSObject и PSTypeNames;
-- Method: метод базового объекта .NET Framework;
-- NoteProperty: свойство со статическим значением;
-- ParameterizedProperty: свойство, принимающее параметры и значения параметров;
-- Property: свойство базового объекта .NET Framework;
-- PropertySet: заранее определенный набор свойств объекта;
-- ScriptMethod: метод, значением которого является результат выполнения скрипта;
-- ScriptProperty: свойство, значением которого является результат выполнения скрипта;
-- All: получает все типы элементов;
-- Methods: получает все типы методов объекта (например, Method, CodeMethod, ScriptMethod);
-- Properties: получает все типы свойств объекта (например, Property, CodeProperty, AliasProperty, ScriptProperty).
Не у всех объектов имеются элементы каждого из типов. Если указать тип элемента, который у объекта отсутствует, оболочка Windows PowerShell вернет значение NULL.
Чтобы получить элементы связанных типов, например все расширенные элементы, следует использовать параметр View. При использовании параметра MemberType с параметрами Static и View командлет Get-Member получает элементы, которые принадлежат обоим наборам.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Name <string[]>
Задает имена одного или нескольких свойств или методов объекта. Командлет Get-Member получает только заданные свойства и методы.
При использовании параметра Name совместно с параметрами MemberType, View или Static командлет Get-Member получает только элементы, которые удовлетворяют всем параметрам.
Чтобы получить статический элемент по имени, необходимо использовать параметр Static совместно с параметром Name.
Обязательно? |
false |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Static
Получает только статические свойства и методы объекта.
Статические свойства и методы определяются для класса объектов, а не для конкретного экземпляра этого класса.
Если параметр Static использовать с параметром View, параметр View игнорируется. При использовании параметра Static с параметром MemberType командлет Get-Member получает только те элементы, которые принадлежат обоим наборам.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-View <PSMemberViewTypes>
Получает только элементы (свойства и методы) конкретных типов. Укажите одно или несколько значений. По умолчанию используется значение "Adapted, Extended".
Допустимые значения:
-- Base: получает только исходные свойства и методы объекта .NET Framework (без расширения или адаптации);
-- Adapted: получает только свойства и методы, определенные в расширенной системе типов Windows PowerShell;
-- Extended: получает только свойства и методы, добавленные в файлы Types.ps1xml или с помощью командлета Add-Member;
-- All: получает элементы, относящиеся к представлениям Base, Adapted и Extended.
Параметр View определяет получаемые, а не только отображаемые элементы.
Чтобы получить элементы конкретных типов, например свойства скриптов, необходимо воспользоваться параметром MemberType. При использовании в одной команде параметров MemberType и View командлет Get-Member получает элементы, которые принадлежат обоим наборам. При использовании в одной команде параметров Static и View параметр View игнорируется.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.Management.Automation.PSObject Любой объект можно передать командлету Get-Member по конвейеру. |
Выходные данные |
Microsoft.PowerShell.Commands.MemberDefinition Командлет Get-Member возвращает объект для каждого получаемого им свойства или метода. |
Примечания
Данные об объекте коллекции можно получить с помощью параметра InputObject, или передав объект с запятой в начале командлету Get-Member по конвейеру.
Пример 1
C:\PS>get-service | get-member
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
Close Method System.Void Close()
Continue Method System.Void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
Dispose Method System.Void Dispose()
Equals Method System.Boolean Equals(Object obj)
ExecuteCommand Method System.Void ExecuteCommand(Int32 command)
GetHashCode Method System.Int32 GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method System.Type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
Pause Method System.Void Pause()
Refresh Method System.Void Refresh()
Start Method System.Void Start(), System.Void Start(String[] args)
Stop Method System.Void Stop()
ToString Method System.String ToString()
WaitForStatus Method System.Void WaitForStatus(ServiceControllerStatus desiredStatus), System.Voi...
CanPauseAndContinue Property System.Boolean CanPauseAndContinue {get;}
CanShutdown Property System.Boolean CanShutdown {get;}
CanStop Property System.Boolean CanStop {get;}
Container Property System.ComponentModel.IContainer Container {get;}
DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName Property System.String DisplayName {get;set;}
MachineName Property System.String MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName Property System.String ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
Site Property System.ComponentModel.ISite Site {get;set;}
Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
Описание
-----------
Эта команда отображает свойства и методы объектов процессов (System.ServiceProcess.ServiceController), создаваемых командлетом Get-Service.
Для передачи результатов выполнения командлета Get-Service командлету Get-Member в этой команде используется оператор конвейера (|).
Поскольку командлет Get-Member в этой команде выполняется без параметров, используются все значения по умолчанию. Поэтому он получает элементы всех типов, однако не получает статические элементы и не отображает встроенные элементы.
Пример 2
C:\PS>get-service | get-member -force
C:\PS> (get-service -schedule).psbase
Описание
-----------
Команда в этом примере получает все элементы (свойства и методы) объектов служб (System.ServiceProcess.ServiceController), получаемых командлетом Get-Service, включая встроенные элементы, такие как PSBase и PSObject, а также методы get_ и set_.
Первая команда с помощью командлета Get-Service получает объекты, представляющие службы системы. Объект службы передается командлету Get-Member с помощью оператора конвейера (|).
Команда Get-Member использует параметр Force, чтобы отобразить встроенные элементы объектов и элементы, создаваемые компилятором. Командлет Get-Member получает эти элементы, однако по умолчанию они не отображаются.
Эти свойства и методы можно использовать так же, как используются адаптированные методы объекта. Вторая команда показывает, как вывести значение свойства PSBase службы Schedule.
Пример 3
C:\PS>get-service | get-member -view extended
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
Описание
-----------
Эта команда получает свойства и методы объектов служб, которые были расширены с помощью файла Types.ps1xml или командлета Add-Member.
Команда Get-Member использует параметр View, чтобы получить только расширенные элементы объектов служб. В данном случае в роли расширенного элемента выступает свойство Name, которое является псевдонимом свойства ServiceName.
Пример 4
C:\PS>get-eventlog -log system | gm -membertype scriptproperty
TypeName: System.Diagnostics.EventLogEntry
Name MemberType Definition
---- ---------- ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}
Описание
-----------
Эта команда получает свойства скрипта объектов журнала событий в журнале "Система" средства "Просмотр событий". В данном случае единственным свойством скрипта является EventID.
Пример 5
C:\PS>get-eventlog -log system | get-member -membertype scriptproperty
TypeName: System.Diagnostics.EventLogEntry
Name MemberType Definition
---- ---------- ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}
Описание
-----------
Эта команда получает свойства скрипта объектов журнала событий в журнале "Система" средства "Просмотр событий".
Команда использует параметр MemberType, чтобы получить только объекты, для которых свойство MemberType имеет значение AliasProperty.
Команда возвращает свойство EventID объекта EventLog.
Пример 6
C:\PS>$a = "get-process", "get-service", "get-culture", "get-psdrive", "get-executionpolicy"
C:\PS> foreach ($cmdlet in $a) {invoke-expression $cmdlet | get-member -name machinename}
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
MachineName Property System.String MachineName {get;}
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
MachineName Property System.String MachineName {get;set;}
Описание
-----------
Эта команда получает объекты, у которых имеется свойство MachineName, указанное в командлетах.
Первая команда сохраняет имена нескольких командлетов в переменной $a.
Вторая команда использует инструкцию ForEach, чтобы вызвать каждую из команд, передать результаты в командлет Get-Member и ограничить результаты выполнения командлета Get-Member только элементами с именем "MachineName".
Результаты показывают, что свойство MachineName имеется только у объектов процессов (System.Diagnostics.Process) и объектов служб (System.ServiceProcess.ServiceController).
Пример 7
C:\PS>$a = get-member -inputobject @(1)
C:\PS>$a.count
1
C:\PS> $a = get-member -inputobject 1,2,3
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Object& Address(Int32 )
Clone Method System.Object Clone()
...
C:\PS>$a.count
1
Описание
-----------
В этом примере показано, как получить свойства и методы объектов, если имеется только один объект заданного типа.
Поскольку целью этой команды является получение свойств массива, первая команда использует параметр InputObject. Для указания массива в ней используется символ "@". В данном случае массив содержит только один объект — целое число 1.
Третья команда получает свойства и методы массива целых чисел с помощью командлета Get-Member и сохраняет их в переменной $a.
Четвертая команда использует свойство Count массива для определения числа объектов в переменной $a.