Get-Member

Obtém as propriedades e métodos dos objetos.

Syntax

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

Description

O Get-Member cmdlet obtém os membros, as propriedades e os métodos dos objetos.

Para especificar o objeto, utilize o parâmetro InputObject ou encaminhe um objeto para Get-Member. Para obter informações sobre membros estáticos, os membros da classe, não da instância, utilizam o parâmetro Estático . Para obter apenas determinados tipos de membros, como NoteProperties, utilize o parâmetro MemberType .

Get-Member devolve uma lista de membros ordenados alfabeticamente. Os métodos são listados primeiro, seguidos das propriedades.

Exemplos

Exemplo 1: Obter os membros dos objetos de processo

Este comando apresenta as propriedades e métodos dos objetos de serviço gerados pelo Get-Service cmdlet.

Uma vez que a Get-Member parte do comando não tem parâmetros, utiliza valores predefinidos para os parâmetros. Por predefinição, Get-Member não obtém membros estáticos ou intrínsecos.

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

Exemplo 2: Obter membros de objetos de serviço

Este exemplo obtém todos os membros (propriedades e métodos) dos objetos de serviço obtidos pelo Get-Service cmdlet, incluindo os membros intrínsecos, tais como PSBase, PSObject e os métodos get_ e set_ .

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

O Get-Member comando utiliza o parâmetro Forçar para adicionar os membros intrínsecos e os membros gerados pelo compilador dos objetos ao ecrã. Pode utilizar estas propriedades e métodos da mesma forma que utilizaria um método adaptado do objeto. O segundo comando mostra como apresentar o valor da propriedade PSBase do serviço Agendar. Para obter mais informações sobre membros intrínsecos, consulte about_Intrinsic_Members

Exemplo 3: Obter membros alargados de objetos de serviço

Este exemplo obtém os métodos e propriedades dos objetos de serviço que foram expandidos através de um Types.ps1xml ficheiro ou do Add-Member 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();

O Get-Member comando utiliza o parâmetro Ver para obter apenas os membros expandidos dos objetos de serviço. Neste caso, o membro expandido é a propriedade Nome , que é uma propriedade de alias da propriedade ServiceName .

Exemplo 4: Obter propriedades de script de objetos de registo de eventos

Este exemplo obtém as propriedades do script de objetos de registo de eventos no Visualizador de Eventos de início de sessão do sistema.

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

O parâmetro MemberType obtém apenas objetos com um valor de NoteProperty para a respetiva propriedade MemberType .

O comando devolve a propriedade Mensagem do objeto EventLogRecord .

Exemplo 5: Obter objetos com uma propriedade especificada

Este exemplo obtém objetos que têm uma propriedade MachineName na saída de uma lista de cmdlets.

A $list variável contém uma lista de cmdlets a avaliar. A foreach instrução invoca cada comando e envia os resultados para Get-Member. O parâmetro Nome limita os resultados de Get-Member para os membros que têm o nome 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;}

Os resultados mostram que apenas objetos de processo e objetos de serviço têm uma propriedade MachineName .

Exemplo 6: Obter membros para uma matriz

Este exemplo demonstra como localizar os membros de uma matriz de objetos. Quando encaminha e matriz de objetos para Get-Member, o cmdlet devolve uma lista de membros para cada tipo de objeto exclusivo na matriz. Se passar a matriz com o parâmetro InputObject , a matriz é tratada como um único objeto.

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

A $array variável contém um objeto Int32 e um objeto de cadeia , conforme visto quando a matriz é encaminhada para Get-Member. Quando $array é transmitido com o parâmetro Get-MemberInputObject devolve os membros do tipo Objeto[].

Exemplo 7: determinar as propriedades do objeto que pode definir

Este exemplo mostra como determinar que propriedades de um objeto podem ser alteradas.

$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

Exemplo 8: Listar as propriedades de um objeto pela ordem em que foram criados

Este exemplo cria um novo PSObject e adiciona propriedades ao mesmo. Get-Member lista as propriedades por ordem alfabética. Para ver as propriedades pela ordem em que foram adicionadas ao objeto, tem de utilizar o membro intrínseco 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

Parâmetros

-Force

Adiciona os membros intrínsecos e os métodos de get_ e set_ gerados pelo compilador ao ecrã. A lista seguinte descreve as propriedades que são adicionadas quando utiliza o parâmetro Forçar :

  • PSBase: as propriedades originais do objeto .NET sem extensão ou adaptação. Estas são as propriedades definidas para a classe de objeto.
  • PSAdapted: as propriedades e métodos definidos no sistema de tipos expandidos do PowerShell.
  • PSExtended: as propriedades e métodos que foram adicionados aos Types.ps1xml ficheiros ou com o Add-Member cmdlet.
  • PSObject: o adaptador que converte o objeto base num objeto PSObject do PowerShell.
  • PSTypeNames: uma lista de tipos de objeto que descrevem o objeto por ordem de especificidade. Ao formatar o objeto, o PowerShell procura os tipos nos Format.ps1xml ficheiros no diretório de instalação do PowerShell ($PSHOME). Utiliza a definição de formatação para o primeiro tipo que encontrar.

Por predefinição, Get-Member obtém estas propriedades em todas as vistas, exceto Base e Adapted, mas não as apresenta.

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

-InputObject

Especifica o objeto cujos membros são obtidos.

Utilizar o parâmetro InputObject não é o mesmo que encaminhar um objeto para Get-Member. As diferenças são as seguintes:

  • Quando encaminha uma coleção de objetos para Get-Member, Get-Member obtém os membros dos objetos individuais na coleção, como as propriedades de cada cadeia numa matriz de cadeias.
  • Quando utiliza InputObject para submeter uma coleção de objetos, Get-Member obtém os membros da coleção, como as propriedades da matriz numa matriz de cadeias.
Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-MemberType

Especifica o tipo de membro que este cmdlet obtém. A predefinição é All.

Os valores aceitáveis para este parâmetro são:

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

Estes valores são definidos como uma enumeração baseada em sinalizador. Pode combinar múltiplos valores para definir vários sinalizadores com este parâmetro. Os valores podem ser transmitidos para o parâmetro MemberType como uma matriz de valores ou como uma cadeia separada por vírgulas desses valores. O cmdlet combinará os valores com uma operação binary-OR. Transmitir valores como uma matriz é a opção mais simples e também lhe permite utilizar a conclusão do separador nos valores.

Para obter informações sobre estes valores, veja Enumeração PSMemberTypes.

Nem todos os objetos têm todos os tipos de membro. Se especificar um tipo de membro que o objeto não tem, o PowerShell devolve um valor nulo. Para obter tipos de membros relacionados, como todos os membros expandidos, utilize o parâmetro Ver . Se utilizar o parâmetro MemberType com os parâmetros Estático ou Ver , Get-Member obtém os membros que pertencem a ambos os conjuntos.

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
Accept pipeline input:False
Accept wildcard characters:False

-Name

Especifica os nomes de uma ou mais propriedades ou métodos do objeto. Get-Member obtém apenas as propriedades e métodos especificados.

Se utilizar o parâmetro Nome com o parâmetro MemberType, View ou Static , Get-Member obtém apenas os membros que satisfazem os critérios de todos os parâmetros.

Para obter um membro estático por nome, utilize o parâmetro Estático com o parâmetro Nome .

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

-Static

Indica que este cmdlet obtém apenas as propriedades estáticas e os métodos do objeto. As propriedades e métodos estáticos são definidos na classe de objetos e não em nenhuma instância específica da classe.

Se utilizar o parâmetro Estático com o parâmetro Ver , o parâmetro Ver é ignorado. Se utilizar o parâmetro Estático com o parâmetro MemberType , Get-Member obtém apenas os membros que pertencem a ambos os conjuntos.

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

-View

Especifica que este cmdlet obtém apenas propriedades e métodos de tipos específicos. Especifique um ou mais dos valores. A predefinição é Adaptado, Expandido.

Os valores aceitáveis para este parâmetro são:

  • Base. Obtém apenas as propriedades e métodos originais do objeto .NET (sem extensão ou adaptação).
  • Adaptado. Obtém apenas as propriedades e métodos definidos no sistema de tipos expandidos do PowerShell.
  • Expandido. Obtém apenas as propriedades e métodos que foram adicionados num Types.ps1xml ficheiro ou através do Add-Member cmdlet.
  • Tudo. Obtém os membros nas vistas Base, Adaptada e Expandida.

O parâmetro Ver determina os membros obtidos e não apenas a apresentação desses membros.

Para obter tipos de membros específicos, como propriedades de script, utilize o parâmetro MemberType . Se utilizar os parâmetros MemberType e View no mesmo comando, Get-Member obtém os membros que pertencem a ambos os conjuntos. Se utilizar os parâmetros Estático e Ver no mesmo comando, o parâmetro Ver é ignorado.

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

Entradas

PSObject

Pode encaminhar qualquer objeto para este cmdlet.

Saídas

MemberDefinition

Este cmdlet devolve um MemberDefinition para cada propriedade ou método que obtém.

Notas

O PowerShell inclui os seguintes aliases para Get-Member:

  • Todas as plataformas:
    • gm

Pode obter informações sobre um objeto de coleção através do parâmetro InputObject ou ao encaminhar o objeto, precedido por uma vírgula, para Get-Member.

Pode utilizar a $This variável automática em blocos de script que definem os valores de novas propriedades e métodos. A $This variável refere-se à instância do objeto ao qual as propriedades e os métodos estão a ser adicionados. Para obter mais informações sobre a $This variável, veja about_Automatic_Variables.

Se transmitir um objeto que representa um tipo, como um tipo literal, como [int], Get-Member devolva informações sobre o [System.RuntimeType] tipo. No entanto, quando utiliza o parâmetro Estático , Get-Member devolve os membros estáticos do tipo específico representado pela System.RuntimeType instância.