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

Синтаксис

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.






См. также




Содержание