Get-Member

Pobiera właściwości i metody obiektów.

Składnia

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

Opis

Polecenie Get-Member cmdlet pobiera elementy członkowskie, właściwości i metody obiektów.

Aby określić obiekt, użyj parametru InputObject lub potoku obiektu do Get-Member. Aby uzyskać informacje o statycznych elementach członkowskich, składowych klasy, a nie wystąpienia, użyj parametru Static . Aby uzyskać tylko niektóre typy elementów członkowskich, takich jak NoteProperties, użyj parametru MemberType .

Get-Member Zwraca listę elementów członkowskich posortowanych alfabetycznie. Metody są wyświetlane jako pierwsze, a następnie właściwości.

Przykłady

Przykład 1. Pobieranie elementów członkowskich obiektów procesu

To polecenie wyświetla właściwości i metody obiektów usługi wygenerowanych przez Get-Service polecenie cmdlet.

Get-Member Ponieważ część polecenia nie ma żadnych parametrów, używa wartości domyślnych parametrów. Domyślnie Get-Member nie pobiera statycznych ani wewnętrznych elementów członkowskich.

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();

Przykład 2. Pobieranie elementów członkowskich obiektów usługi

Ten przykład pobiera wszystkie elementy członkowskie (właściwości i metody) obiektów usługi pobranych przez Get-Service polecenie cmdlet, w tym elementy wewnętrzne, takie jak PSBase, PSObject, oraz metody get_ i set_ .

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

Polecenie Get-Member używa parametru Force , aby dodać do wyświetlania wewnętrzne elementy członkowskie i elementy członkowskie generowane przez kompilator. Można użyć tych właściwości i metod w taki sam sposób, jak w przypadku zastosowania dostosowanej metody obiektu. Drugie polecenie pokazuje, jak wyświetlić wartość właściwości PSBase usługi Schedule. Aby uzyskać więcej informacji na temat elementów wewnętrznych, zobacz about_Intrinsic_Members

Przykład 3. Uzyskiwanie rozszerzonych elementów członkowskich obiektów usługi

Ten przykład pobiera metody i właściwości obiektów usługi, które zostały rozszerzone przy użyciu Types.ps1xml pliku lub Add-Member polecenia cmdlet.

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();

Polecenie Get-Member używa parametru View , aby uzyskać tylko rozszerzone elementy członkowskie obiektów usługi. W tym przypadku rozszerzony element członkowski jest właściwością Name, która jest właściwością aliasu właściwości ServiceName.

Przykład 4. Pobieranie właściwości skryptu obiektów dziennika zdarzeń

W tym przykładzie są pobierane właściwości skryptu obiektów dziennika zdarzeń w dzienniku systemu Podgląd zdarzeń.

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 ...

Parametr MemberType pobiera tylko obiekty o wartości NoteProperty dla ich właściwości MemberType.

Polecenie zwraca właściwość Message obiektu EventLogRecord.

Przykład 5. Pobieranie obiektów z określoną właściwością

Ten przykład pobiera obiekty, które mają właściwość MachineName w danych wyjściowych z listy poleceń cmdlet.

Zmienna $list zawiera listę poleceń cmdlet do oceny. Instrukcja foreach wywołuje każde polecenie i wysyła wyniki do Get-Member. Parametr Name ogranicza wyniki z Get-Member do elementów członkowskich, które mają nazwę 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;}

Wyniki pokazują, że tylko obiekty przetwarzania i obiekty usługi mają właściwość MachineName .

Przykład 6. Pobieranie elementów członkowskich dla tablicy

W tym przykładzie pokazano, jak znaleźć elementy członkowskie tablicy obiektów. Podczas potoku i tablicy obiektów do Get-Memberpolecenia cmdlet zwraca listę elementów członkowskich dla każdego unikatowego typu obiektu w tablicy. Jeśli przekażesz tablicę przy użyciu parametru InputObject , tablica jest traktowana jako pojedynczy obiekt.

$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...
...

Zmienna zawiera obiekt Int32 i obiekt ciągu, jak widać, gdy tablica jest potokowa do Get-Member.$array Po $array przekazaniu przy użyciu parametru Get-MemberInputObject zwraca elementy członkowskie typu Object[].

Przykład 7. Określanie właściwości obiektu, które można ustawić

W tym przykładzie pokazano, jak określić, które właściwości obiektu można zmienić.

$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

Przykład 8: Wyświetlanie listy właściwości obiektu w kolejności, w której zostały utworzone

W tym przykładzie zostanie utworzony nowy obiekt PSObject i doda do niego właściwości. Get-Member wyświetla właściwości w kolejności alfabetycznej. Aby wyświetlić właściwości w kolejności, w której zostały dodane do obiektu, należy użyć wewnętrznego elementu członkowskiego 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

Parametry

-Force

Dodaje wewnętrzne elementy członkowskie i metody get_ generowane przez kompilator oraz set_ do wyświetlania. Poniższa lista zawiera opis właściwości, które są dodawane podczas korzystania z parametru Force :

  • PSBase: oryginalne właściwości obiektu .NET bez rozszerzenia lub adaptacji. Są to właściwości zdefiniowane dla klasy obiektów.
  • PSAdapted: właściwości i metody zdefiniowane w rozszerzonym systemie typów programu PowerShell.
  • PSExtended: właściwości i metody, które zostały dodane w plikach Types.ps1xml lub przy użyciu Add-Member polecenia cmdlet .
  • PSObject: adapter, który konwertuje obiekt podstawowy na obiekt PSObject programu PowerShell.
  • PSTypeNames: lista typów obiektów opisujących obiekt w kolejności specyficznej. Podczas formatowania obiektu program PowerShell wyszukuje typy w plikach w Format.ps1xml katalogu instalacyjnym programu PowerShell ($PSHOME). Używa definicji formatowania dla pierwszego znalezionego typu.

Domyślnie Get-Member te właściwości są pobierane we wszystkich widokach z wyjątkiem wartości Base i Adapt, ale nie są wyświetlane.

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

-InputObject

Określa obiekt, którego elementy członkowskie są pobierane.

Użycie parametru InputObject nie jest takie samo jak potokowanie obiektu do Get-Memberklasy . Różnice są następujące:

  • Podczas potoku kolekcji obiektów do Get-Memberprogramu Get-Member pobiera elementy członkowskie poszczególnych obiektów w kolekcji, takie jak właściwości każdego ciągu w tablicy ciągów.
  • Gdy używasz obiektu InputObject do przesyłania kolekcji obiektów, Get-Member pobiera elementy członkowskie kolekcji, takie jak właściwości tablicy w tablicy ciągów.
Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-MemberType

Określa typ elementu członkowskiego pobierany przez to polecenie cmdlet. Wartość domyślna to All.

Dopuszczalne wartości tego parametru to:

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

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru MemberType jako tablicę wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją, a także umożliwia użycie uzupełniania tabulatorów na wartościach.

Aby uzyskać informacje o tych wartościach, zobacz PSMemberTypes, wyliczenie.

Nie wszystkie obiekty mają każdy typ elementu członkowskiego. Jeśli określisz typ elementu członkowskiego, którego obiekt nie ma, program PowerShell zwróci wartość null. Aby uzyskać powiązane typy elementów członkowskich, takie jak wszystkie rozszerzone elementy członkowskie, użyj parametru Wyświetl . Jeśli używasz parametru MemberType z parametrami Statyczny lub Widok , Get-Member pobiera elementy członkowskie należące do obu zestawów.

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

Określa nazwy co najmniej jednej właściwości lub metod obiektu. Get-Member pobiera tylko określone właściwości i metody.

Jeśli używasz parametru Name z parametrem MemberType, View lub Static, Get-Member pobiera tylko elementy członkowskie spełniające kryteria wszystkich parametrów.

Aby uzyskać statyczny element członkowski według nazwy, użyj parametru Static z parametrem Name .

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

-Static

Wskazuje, że to polecenie cmdlet pobiera tylko właściwości statyczne i metody obiektu. Właściwości statyczne i metody są definiowane w klasie obiektów, a nie w żadnym konkretnym wystąpieniu klasy.

Jeśli używasz parametru statycznego z parametrami Widok lub Wymuś, polecenie cmdlet ignoruje te parametry. Jeśli używasz parametru Static z parametrem MemberType , Get-Member pobiera tylko elementy członkowskie należące do obu zestawów.

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

-View

Określa, że to polecenie cmdlet pobiera tylko określone typy właściwości i metody. Określ co najmniej jedną wartość. Wartość domyślna to Dostosowane, Rozszerzone.

Dopuszczalne wartości tego parametru to:

  • Podstawowej. Pobiera tylko oryginalne właściwości i metody obiektu .NET (bez rozszerzenia lub adaptacji).
  • Dostosowane. Pobiera tylko właściwości i metody zdefiniowane w rozszerzonym systemie typów programu PowerShell.
  • Rozszerzone. Pobiera tylko właściwości i metody, które zostały dodane w Types.ps1xml plikach lub przy użyciu Add-Member polecenia cmdlet .
  • Wszystkie Pobiera elementy członkowskie w widokach Podstawowe, Dostosowane i Rozszerzone.

Parametr Widok określa pobrane elementy członkowskie, a nie tylko wyświetlanie tych elementów członkowskich.

Aby uzyskać określone typy składowe, takie jak właściwości skryptu, użyj parametru MemberType . Jeśli używasz parametrów MemberType i View w tym samym poleceniu, Get-Member pobiera elementy członkowskie należące do obu zestawów. Jeśli używasz parametrów Statyczne i Wyświetl w tym samym poleceniu, parametr View zostanie zignorowany.

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

Dane wejściowe

PSObject

Do tego polecenia cmdlet można przekazać dowolny obiekt.

Dane wyjściowe

MemberDefinition

To polecenie cmdlet zwraca właściwość MemberDefinition dla każdej właściwości lub metody, która jest pobierana.

Uwagi

Program PowerShell zawiera następujące aliasy dla programu Get-Member:

  • Wszystkie platformy:
    • gm

Informacje o obiekcie kolekcji można uzyskać przy użyciu parametru InputObject lub przez potokowanie obiektu poprzedzonego przecinkiem na Get-Member.

Możesz użyć zmiennej automatycznej $This w blokach skryptu, które definiują wartości nowych właściwości i metod. Zmienna $This odwołuje się do wystąpienia obiektu, do którego dodawane są właściwości i metody. Aby uzyskać więcej informacji na temat zmiennej $This , zobacz about_Automatic_Variables.

Jeśli przekażesz obiekt reprezentujący typ, na przykład literał typu, taki jak [int], Get-Member zwraca informacje o typie[System.RuntimeType]. Jednak w przypadku użycia parametru Get-Member Static zwraca statyczne elementy członkowskie określonego typu reprezentowanego System.RuntimeType przez wystąpienie.