Поделиться через


Get-Member

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

Синтаксис

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

Описание

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

Чтобы указать объект, используйте параметр InputObject или передайте объект Get-Memberв . Чтобы получить сведения о статических членах, члены класса, а не экземпляра, используйте статический параметр. Чтобы получить только определенные типы элементов, например 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 службы Schedule. Дополнительные сведения о встроенных элементах см. в 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 и строковый объект, как показано при канале массива Get-Member. При $array передаче с помощью параметра Get-Member InputObject возвращаются члены типа 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: адаптер, который преобразует базовый объект в объект PowerShell PSObject .
  • PSTypeNames: список типов объектов, описывающих объект, в порядке конкретности. При форматировании объекта PowerShell ищет типы в файлах Format.ps1xml в каталоге установки PowerShell ($PSHOME). Определение форматирования используется для первого найденного типа.

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

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Указывает объект с полученными членами.

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

  • При канале коллекции объектов Get-MemberGet-Member в коллекцию получает элементы отдельных объектов в коллекции, например свойства каждой строки в массиве строк.
  • При использовании InputObject для отправки коллекции объектов Get-Member получает элементы коллекции, такие как свойства массива в массиве строк.
Тип:PSObject
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-MemberType

Указывает тип члена, который получает этот командлет. Значение по умолчанию — All.

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

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

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

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

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

Тип:PSMemberTypes
Aliases:Type
Допустимые значения:AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Name

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

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

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

Тип:String[]
Position:0
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Static

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

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

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-View

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

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

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

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

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

Тип:PSMemberViewTypes
Допустимые значения:Extended, Adapted, Base, All
Position:Named
Default value:Adapted, Extended
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

PSObject

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

Выходные данные

MemberDefinition

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

Примечания

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

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

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

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

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