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


Get-Member

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

Синтаксис

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 службы 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;}

Результаты показывают, что только объекты process и объекты службы имеют свойство 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-MemberInputObject возвращаются члены типа 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 кроме базовых и адаптированных, но не отображает их.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

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

  • При конвейере коллекции объектов Get-Memberв получает Get-Member элементы отдельных объектов в коллекции, например свойства каждой строки в массиве строк.
  • При использовании InputObject для отправки коллекции объектов Get-Member получает элементы коллекции, например свойства массива в массиве строк.
Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 с параметрами Static или View получает элементы, Get-Member принадлежащие обоим наборам.

Type:PSMemberTypes
Aliases:Type
Accepted values:AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

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

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

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

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Static

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-View

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

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

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

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

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

Type:PSMemberViewTypes
Accepted values:Extended, Adapted, Base, All
Position:Named
Default value:Adapted, Extended
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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

PSObject

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

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

MemberDefinition

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

Примечания

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

  • Для всех платформ.
    • gm

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

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

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