Поиск по сайту:

Get-Member (Microsoft.PowerShell.Utility)


Get-Member

Модуль:
Microsoft.PowerShell.Utility

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

Синтаксис

Get-Member
   [-InputObject <PSObject>]
   [[-Name] <String[]>]
   [-MemberType <PSMemberTypes>]
   [-View <PSMemberViewTypes>]
   [-Static]
   [-Force]
   [<CommonParameters>]

Описание

Командлет Get-Member получает члены, свойства и методы объектов.

Чтобы указать объект, используйте параметр InputObject или передайте объект в Get-Member. Чтобы получить информацию о статических членах, членах класса, а не экземпляра, используйте параметр Static. Чтобы получить только определенные типы членов, например NoteProperties, используйте параметр MemberType.

Get-Member возвращает список членов, отсортированный в алфавитном порядке. Сначала перечисляются методы, а затем свойства.

Примеры

Пример 1. Получение членов объектов процесса

Эта команда отображает свойства и методы объектов службы, созданных командлетом Get-Service.

Поскольку часть команды Get-Member не имеет параметров, для параметров используются значения по умолчанию. По умолчанию Get-Member не получает статические или внутренние члены.

Get-Service | Get-Member

TypeName: System.Service.ServiceController#StartupType

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
RequiredServices          AliasProperty RequiredServices = ServicesDependedOn
Disposed                  Event         System.EventHandler Disposed(System.Object, System.EventArgs)
Close                     Method        void Close()
Continue                  Method        void Continue()
Dispose                   Method        void Dispose(), void IDisposable.Dispose()
Equals                    Method        bool Equals(System.Object obj)
ExecuteCommand            Method        void ExecuteCommand(int command)
GetHashCode               Method        int GetHashCode()
GetLifetimeService        Method        System.Object GetLifetimeService()
GetType                   Method        type GetType()
InitializeLifetimeService Method        System.Object InitializeLifetimeService()
Pause                     Method        void Pause()
Refresh                   Method        void Refresh()
Start                     Method        void Start(), void Start(string[] args)
Stop                      Method        void Stop()
WaitForStatus             Method        void WaitForStatus(System.ServiceProcess.ServiceControllerSt...
BinaryPathName            Property      System.String {get;set;}
CanPauseAndContinue       Property      bool CanPauseAndContinue {get;}
CanShutdown               Property      bool CanShutdown {get;}
CanStop                   Property      bool CanStop {get;}
Container                 Property      System.ComponentModel.IContainer Container {get;}
DelayedAutoStart          Property      System.Boolean {get;set;}
DependentServices         Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
Description               Property      System.String {get;set;}
DisplayName               Property      string DisplayName {get;set;}
MachineName               Property      string MachineName {get;set;}
ServiceHandle             Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName               Property      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;}
StartType                 Property      System.ServiceProcess.ServiceStartMode StartType {get;}
StartupType               Property      Microsoft.PowerShell.Commands.ServiceStartupType {get;set;}
Status                    Property      System.ServiceProcess.ServiceControllerStatus Status {get;}
UserName                  Property      System.String {get;set;}
ToString                  ScriptMethod  System.Object ToString();

Пример 2. Получение членов объектов службы

В этом примере получаются все члены (свойства и методы) объектов службы, полученные с помощью командлета Get-Service, включая внутренние члены, такие как PSBase, PSObject<. и методы get_ и set_.

Get-Service | Get-Member -Force
(Get-Service Schedule).PSBase

Команда Get-Member использует параметр Force для добавления внутренних членов и элементов, созданных компилятором объектов, на экран. Вы можете использовать эти свойства и методы так же, как если бы вы использовали адаптированный метод объекта. Вторая команда показывает, как отобразить значение свойства PSBase службы расписания. Дополнительные сведения о внутренних членах см. в разделе about_Intrinsic_Members.

Пример 3. Получение расширенных членов объектов службы

В этом примере получаются методы и свойства объектов службы, которые были расширены с помощью файла Types.ps1xml или командлета Add-Member.

Get-Service | Get-Member -View Extended

TypeName: System.Service.ServiceController#StartupType

Name             MemberType    Definition
----             ----------    ----------
Name             AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = ServicesDependedOn
ToString         ScriptMethod  System.Object ToString();

Команда Get-Member использует параметр View для получения только расширенных членов объектов службы. В данном случае расширенным элементом является свойство Name, которое является псевдонимом свойства ServiceName.

Пример 4. Получение свойств сценария объектов журнала событий.

В этом примере получаются свойства сценария объектов журнала событий в системном журнале в средстве просмотра событий.

Get-WinEvent -LogName System -MaxEvents 1 | Get-Member -MemberType NoteProperty

TypeName: System.Diagnostics.Eventing.Reader.EventLogRecord

Name    MemberType   Definition
----    ----------   ----------
Message NoteProperty string Message=The machine-default permission settings do not grant Local ...

Параметр MemberType получает только объекты со значением NoteProperty для их свойства MemberType.

Команда возвращает свойство Message объекта EventLogRecord.

Пример 5. Получение объектов с указанным свойством

В этом примере получаются объекты, имеющие свойство MachineName в выходных данных из списка командлетов.

Переменная $list содержит список командлетов, которые необходимо оценить. Оператор foreach вызывает каждую команду и отправляет результаты в Get-Member. Параметр Name ограничивает результаты Get-Member элементами с именем MachineName.

$list = "Get-Process", "Get-Service", "Get-Culture", "Get-PSDrive", "Get-ExecutionPolicy"
foreach ($cmdlet in $list) {& $cmdlet | Get-Member -Name MachineName}

TypeName: System.Diagnostics.Process

Name        MemberType Definition
----        ---------- ----------
MachineName Property   string MachineName {get;}

   TypeName: System.Service.ServiceController#StartupType

Name        MemberType Definition
----        ---------- ----------
MachineName Property   string MachineName {get;set;}

Результаты показывают, что только объекты процессов и объекты служб имеют свойство MachineName.

Пример 6. Получение элементов массива

В этом примере показано, как найти члены массива объектов. Когда вы передаете массив объектов в Get-Member, командлет возвращает список членов для каждого уникального типа объекта в массиве. Если вы передаете массив с помощью параметра InputObject, массив обрабатывается как один объект.

$array = @(1,'hello')
$array | Get-Member

TypeName: System.Int32

Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value), int ICompar...
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable[int...
GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
GetTypeCode Method     System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
ToBoolean   Method     bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte      Method     byte IConvertible.ToByte(System.IFormatProvider provider)
...

   TypeName: System.String

Name                 MemberType            Definition
----                 ----------            ----------
Clone                Method                System.Object Clone(), System.Object ICloneable.Clone()
CompareTo            Method                int CompareTo(System.Object value), int CompareTo(str...
Contains             Method                bool Contains(string value), bool Contains(string val...
CopyTo               Method                void CopyTo(int sourceIndex, char[] destination, int ...
EndsWith             Method                bool EndsWith(string value), bool EndsWith(string val...
EnumerateRunes       Method                System.Text.StringRuneEnumerator EnumerateRunes()
Equals               Method                bool Equals(System.Object obj), bool Equals(string va...
GetEnumerator        Method                System.CharEnumerator GetEnumerator(), System.Collect...
GetHashCode          Method                int GetHashCode(), int GetHashCode(System.StringCompa...
...

Get-Member -InputObject $array

TypeName: System.Object[]

Name           MemberType            Definition
----           ----------            ----------
Add            Method                int IList.Add(System.Object value)
Address        Method                System.Object&, System.Private.CoreLib, Version=4.0.0.0, Cu...
Clear          Method                void IList.Clear()
Clone          Method                System.Object Clone(), System.Object ICloneable.Clone()
CompareTo      Method                int IStructuralComparable.CompareTo(System.Object other, Sy...
...

Переменная $array содержит объект Int32 и объект string, как видно, когда массив передается по конвейеру в Get-Member. Когда $array передается с использованием параметра InputObject, Get-Member возвращает элементы типа Object[].

Пример 7. Определите, какие свойства объекта вы можете установить.

В этом примере показано, как определить, какие свойства объекта можно изменить.

$File = Get-Item c:\test\textFile.txt
$File.PSObject.Properties | Where-Object isSettable | Select-Object -Property Name

Name
----
PSPath
PSParentPath
PSChildName
PSDrive
PSProvider
PSIsContainer
IsReadOnly
CreationTime
CreationTimeUtc
LastAccessTime
LastAccessTimeUtc
LastWriteTime
LastWriteTimeUtc
Attributes

Пример 8. Перечислите свойства объекта в том порядке, в котором они были созданы.

В этом примере создается новый PSObject и добавляются к нему свойства. Get-Member перечисляет свойства в алфавитном порядке. Чтобы просмотреть свойства в том порядке, в котором они были добавлены к объекту, вы должны использовать внутренний элемент PSObject.

$Asset = New-Object -TypeName PSObject
$d = [ordered]@{Name="Server30";System="Server Core";PSVersion="4.0"}
$Asset | Add-Member -NotePropertyMembers $d -TypeName Asset
$Asset.PSObject.Properties | Select-Object Name, Value

Name      Value
----      -----
Name      Server30
System    Server Core
PSVersion 4.0

Параметры

-Force

Добавляет на экран внутренние члены и созданные компилятором методы get_ и set_. В следующем списке описаны свойства, которые добавляются при использовании параметра Force:

  • PSBase: исходные свойства объекта .NET без расширения или адаптации. Это свойства, определенные для класса объекта.
  • PSAdapted: свойства и методы, определенные в системе расширенных типов PowerShell.
  • PSExtended: свойства и методы, добавленные в файлы Types.ps1xml или с помощью командлета Add-Member.
  • PSObject: адаптер, преобразующий базовый объект в объект PSObject PowerShell.
  • PSTypeNames: список типов объектов, описывающих объект, в порядке их специфичности. При форматировании объекта PowerShell ищет типы в файлах Format.ps1xml в каталоге установки PowerShell ($PSHOME). Он использует определение форматирования для первого найденного типа.

По умолчанию Get-Member получает эти свойства во всех представлениях, кроме Base и Adapted, но не отображает их.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-InputObject

Указывает объект, члены которого извлекаются.

Использование параметра InputObject — это не то же самое, что передача объекта по конвейеру в Get-Member. Различия заключаются в следующем:

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

PSОбъект

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

True

Принимайте подстановочные знаки:

False

-MemberType

Указывает тип члена, который получает этот командлет. По умолчанию используется Все.

Допустимые значения этого параметра:

    AliasProperty
    CodeProperty
    Property
    NoteProperty
    ScriptProperty
    Properties
    PropertySet
    Method
    CodeMethod
    ScriptMethod
    Methods
    ParameterizedProperty
    MemberSet
    Event
    Dynamic
    All

Эти значения определяются как перечисление на основе флагов. С помощью этого параметра вы можете объединить несколько значений вместе, чтобы установить несколько флагов. Значения можно передавать в параметр MemberType как массив значений или как строку этих значений, разделенную запятыми. Командлет объединит значения с помощью операции двоичного ИЛИ. Передача значений в виде массива — это самый простой вариант, который также позволяет использовать для значений табуляцию.

Сведения об этих значениях см. в разделе Перечисление PSMemberTypes.

Не все объекты имеют все типы членов. Если вы укажете тип члена, которого нет у объекта, PowerShell вернет нулевое значение. Чтобы получить связанные типы членов, например все расширенные элементы, используйте параметр View. Если вы используете параметр MemberType с параметрами Static или View, Get-Member получает элементы, принадлежащие оба набора.

Тип :

PSMemberTypes

Псевдонимы:

Type

Принятые значения:

AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Свойства, PropertySet, Метод, CodeMethod, ScriptMethod, Методы, ParameterizedProperty, MemberSet, Event, Динамический, Все

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Name

Указывает имена одного или нескольких свойств или методов объекта. Get-Member получает только указанные свойства и методы.

Если вы используете параметр Name с параметром MemberType, View или Static, Get-Member получает только те элементы, которые удовлетворяют критериям всех параметров.

Чтобы получить статический элемент по имени, используйте параметр Static с параметром Name.

Тип :

String[]

Позиция:

0

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-Static

Указывает, что этот командлет получает только статические свойства и методы объекта. Статические свойства и методы определяются для класса объектов, а не для какого-либо конкретного экземпляра класса.

Если вы используете параметр Static с параметрами View или Force, командлет игнорирует эти параметры. Если вы используете параметр Static с параметром MemberType, Get-Member получает только те элементы, которые принадлежат обоим наборам.

Тип :

SwitchParameter

Позиция:

Именованный

Значение по умолчанию:

None

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

-View

Указывает, что этот командлет получает только свойства и методы определенных типов. Укажите одно или несколько значений. По умолчанию используется значение Адаптированный, Расширенный.

Допустимые значения этого параметра:

  • База. Получает только исходные свойства и методы объекта .NET (без расширения или адаптации).
  • Адаптировано. Получает только свойства и методы, определенные в системе расширенных типов PowerShell.
  • Расширенный. Получает только те свойства и методы, которые были добавлены в файлы Types.ps1xml или с помощью командлета Add-Member.
  • Все. Получает элементы в базовом, адаптированном и расширенном представлениях.

Параметр View определяет извлекаемые элементы, а не только их отображение.

Чтобы получить определенные типы элементов, например свойства скрипта, используйте параметр MemberType. Если вы используете параметры MemberType и View в одной команде, Get-Member получает элементы, принадлежащие обоим наборам. Если вы используете параметры Static и View в одной команде, параметр View игнорируется.

Тип :

PSMemberViewTypes

Принятые значения:

Расширенный, Адаптированный, Базовый, Все

Позиция:

Именованный

Значение по умолчанию:

Адаптированный, Расширенный

Необходимый:

False

Примите ввод конвейера:

False

Принимайте подстановочные знаки:

False

Входы

PSObject

В этот командлет можно передать любой объект.

Выходы

Определение элемента

Этот командлет возвращает MemberDefinition для каждого полученного свойства или метода.

Примечания

PowerShell включает следующие псевдонимы для Get-Member:

  • Все платформы:

      gm

Вы можете получить информацию об объекте коллекции либо с помощью параметра InputObject, либо путем передачи объекта, которому предшествует запятая, в Get-Member.

Вы можете использовать автоматическую переменную $This в блоках скриптов, определяющих значения новых свойств и методов. Переменная $This относится к экземпляру объекта, к которому добавляются свойства и методы. Дополнительные сведения о переменной $This см. в разделе about_Automatic_Variables.

Если вы передаете объект, представляющий тип, например литерал типа, такой как [int], Get-Member возвращает информацию о Тип [System.RuntimeType]. Однако при использовании параметра Static Get-Member возвращает статические члены определенного типа, представленного экземпляром System.RuntimeType.