Получает свойства и методы объектов.

Синтаксис

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.






См. также