Condividi tramite


Get-Member

Ottiene le proprietà e i metodi degli oggetti .

Sintassi

Default (Impostazione predefinita)

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

Descrizione

Il cmdlet Get-Member ottiene i membri, le proprietà e i metodi degli oggetti.

Per specificare l'oggetto, utilizzare il parametro InputObject o reindirizzare un oggetto a Get-Member. Per ottenere informazioni sui membri statici, utilizzare il parametro Static per i membri della classe, non per l'istanza. Per ottenere solo determinati tipi di membri, ad esempio NoteProperties, utilizzare il parametro MemberType .

Esempio

Esempio 1: Ottenere i membri degli oggetti processo

PS> Get-Service | Get-Member
TypeName: System.ServiceProcess.ServiceController
Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
CreateObjRef              Method        System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
Dispose                   Method        System.Void Dispose()
Equals                    Method        System.Boolean Equals(Object obj)
ExecuteCommand            Method        System.Void ExecuteCommand(Int32 command)
GetHashCode               Method        System.Int32 GetHashCode()
GetLifetimeService        Method        System.Object GetLifetimeService()
GetType                   Method        System.Type GetType()
InitializeLifetimeService Method        System.Object InitializeLifetimeService()
Pause                     Method        System.Void Pause()
Refresh                   Method        System.Void Refresh()
Start                     Method        System.Void Start(), System.Void Start(String[] args)
Stop                      Method        System.Void Stop()
ToString                  Method        System.String ToString()
WaitForStatus             Method        System.Void WaitForStatus(ServiceControllerStatus desiredStatus), System.Voi...
CanPauseAndContinue       Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown               Property      System.Boolean CanShutdown {get;}
CanStop                   Property      System.Boolean CanStop {get;}
Container                 Property      System.ComponentModel.IContainer Container {get;}
DependentServices         Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName               Property      System.String DisplayName {get;set;}
MachineName               Property      System.String MachineName {get;set;}
ServiceHandle             Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName               Property      System.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;}
Status                    Property      System.ServiceProcess.ServiceControllerStatus Status {get;}

Questo comando consente di visualizzare le proprietà e i metodi degli oggetti processo (System.ServiceProcess.ServiceController) generati dal cmdlet Get-Service.

Il comando utilizza l'operatore pipeline (|) per inviare l'output di un comando Get-Service a Get-Member.

Poiché la parte Get-Member del comando non dispone di parametri, vengono utilizzati tutti i valori predefiniti. Di conseguenza, ottiene tutti i tipi di membri, ma non ottiene membri statici e non visualizza membri intrinseci.

Esempio 2: Ottenere i membri degli oggetti servizio

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

In questo esempio vengono recuperati tutti i membri (proprietà e metodi) degli oggetti servizio (System.ServiceProcess.ServiceController) recuperati dal cmdlet Get-Service, inclusi i membri intrinseci, ad esempio PSBase e PSObject, e i metodi get_ e set_.

Il primo comando utilizza il cmdlet Get-Service per ottenere gli oggetti che rappresentano i servizi nel sistema. Utilizza un operatore pipeline (|) per passare gli oggetti servizio al cmdlet Get-Member .

Il comando Get-Member utilizza il parametro Force per aggiungere alla visualizzazione i membri intrinseci e i membri generati dal compilatore degli oggetti. Get-Member ottiene questi membri, ma li nasconde per impostazione predefinita.

È possibile utilizzare queste proprietà e questi metodi nello stesso modo in cui si utilizzerebbe un metodo adattato dell'oggetto. Il secondo comando illustra come visualizzare il valore della proprietà PSBase del servizio Schedule.

Esempio 3: Ottenere membri estesi di oggetti servizio

PS> Get-Service| Get-Member -View Extended
TypeName: System.ServiceProcess.ServiceController
Name MemberType    Definition
---- ----------    ----------
Name AliasProperty Name = ServiceName

Questo comando ottiene i metodi e le proprietà degli oggetti servizio che sono stati estesi usando il file Types.ps1xml o il cmdlet Add-Member.

Il comando Get-Member utilizza il parametro View per ottenere solo i membri estesi degli oggetti servizio. In questo caso, il membro esteso è la proprietà Name, che è una proprietà alias della proprietà ServiceName.

Esempio 4: Ottenere le proprietà dello script degli oggetti del registro eventi

PS> Get-EventLog -Log System | Get-Member -MemberType ScriptProperty
TypeName: System.Diagnostics.EventLogEntry
Name    MemberType     Definition
----    ----------     ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}

Questo comando ottiene le proprietà dello script degli oggetti del registro eventi nel registro di sistema nel Visualizzatore eventi.

Il comando utilizza il parametro MemberType per ottenere solo gli oggetti con un valore di ScriptProperty per la proprietà MemberType.

Il comando restituisce la proprietà EventID dell'oggetto EventLog .

Esempio 5: Ottenere oggetti con una proprietà specificata

PS> $A = "Get-Process", "Get-Service", "Get-Culture", "Get-PSDrive", "Get-ExecutionPolicy"
PS> ForEach ($Cmdlet in $A) {Invoke-Command $Cmdlet | Get-Member -Name MachineName}
TypeName: System.Diagnostics.Process
Name        MemberType Definition
----        ---------- ----------
MachineName Property   System.String MachineName {get;}
TypeName: System.ServiceProcess.ServiceController
Name        MemberType Definition
----        ---------- ----------
MachineName Property   System.String MachineName {get;set;}

Questo comando ottiene gli oggetti con una proprietà MachineName da un elenco di cmdlet.

Il primo comando memorizza i nomi di diversi cmdlet nella variabile $A.

Il secondo comando utilizza un'istruzione ForEach per richiamare ogni comando, inviare i risultati a Get-Member e limitare i risultati di Get-Member ai membri con il nome MachineName.

I risultati mostrano che solo gli oggetti processo (System.Diagnostics.Process) e gli oggetti servizio (System.ServiceProcess.ServiceController) dispongono di una proprietà MachineName.

Esempio 6: Ottenere i membri per una matrice

PS> $A = @(1)
PS> $A.Count
1
PS> Get-Member -InputObject $A
TypeName: System.Object[]
Name               MemberType    Definition
----               ----------    ----------
Count              AliasProperty Count = Length
Address            Method        System.Object& Address(Int32 )
Clone              Method        System.Object Clone()
...
PS> $A = @(1,2,3)
PS> Get-Member -InputObject $A
TypeName: System.Object[]
Name               MemberType    Definition
----               ----------    ----------
Count              AliasProperty Count = Length
Address            Method        System.Object& Address(Int32 )
Clone              Method        System.Object Clone()
...
PS> $A.Count
3

In questo esempio viene illustrato come trovare le proprietà e i metodi di una matrice di oggetti quando si dispone di un solo oggetto del tipo specificato.

Poiché l'obiettivo del comando è trovare le proprietà di una matrice, il primo comando utilizza il parametro InputObject . Utilizza il simbolo at (@) per indicare un array. In questo caso, l'array contiene un solo oggetto, l'intero 1.

Il terzo comando utilizza il cmdlet Get-Member per ottenere le proprietà e i metodi di una matrice di numeri interi e il comando li salva nella variabile $A.

Il quarto comando utilizza la proprietà Count della matrice per trovare il numero di oggetti nella variabile $A.

Esempio 7: Determinare quali proprietà dell'oggetto è possibile impostare

PS> $File = Get-Item c:\test\textFile.txt
PS> $File.psobject.properties | Where-Object {$_.issettable} | Format-Table -Property name
Name
----
PSPath
PSParentPath
PSChildName
PSDrive
PSProvider
PSIsContainer
IsReadOnly
CreationTime
CreationTimeUtc
LastAccessTime
LastAccessTimeUtc
LastWriteTime
LastWriteTimeUtc
Attributes
PS> [appdomain]::CurrentDomain.GetAssemblies() | ForEach-Object { $_.getexportedtypes() } | ForEach-Object {$_.getproperties() | Where-Object {$_.canwrite }} | Select-Object reflectedtype, name

In questo esempio viene illustrato come determinare quali proprietà di un oggetto possono essere modificate. Nell'esempio viene utilizzato un file, ma è possibile utilizzare questo formato di comando per trovare le proprietà modificabili di qualsiasi oggetto in Windows PowerShell.

Il primo comando usa il cmdlet Get-Item per ottenere un file di testo e quindi salva l'oggetto file nella variabile $File.

Il secondo comando ottiene tutte le proprietà modificabili dell'oggetto file nella variabile $File e visualizza i nomi delle proprietà in una tabella.

Il terzo comando ottiene le proprietà modificabili di tutti gli oggetti nella sessione di Windows PowerShell.

Esempio 8: Ottenere i membri di ogni elemento in una raccolta

PS> $S = Get-Service
PS> $S | Get-Member
TypeName: System.ServiceProcess.ServiceController
Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
RequiredServices          AliasProperty RequiredServices = ServicesDependedOn
Disposed                  Event         System.EventHandler Disposed(System.Object, System.EventArgs
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
CreateObjRef              Method        System.Runtime.Remoting.ObjRef CreateObjRef(type requestedTy
Dispose                   Method        System.Void Dispose()
...
PS> Get-Member -InputObject $S
TypeName: System.Object[]
Name           MemberType    Definition
----           ----------    ----------
Count          AliasProperty Count = Length
Address        Method        System.Object&, mscorlib, Version=2.0.0.0, Cultu
Clone          Method        System.Object Clone()
CopyTo         Method        System.Void CopyTo(array array, int index), Syst
Equals         Method        bool Equals(System.Object obj)
Get            Method        System.Object Get(int )
GetEnumerator  Method        System.Collections.IEnumerator GetEnumerator()
GetHashCode    Method        int GetHashCode()
...

In questo esempio viene illustrato il funzionamento del parametro InputObject nel cmdlet Get-Member . Quando si utilizza il parametro InputObject per ottenere i membri di un insieme, Get-Member ottiene i membri dell'insieme. Quando si reindirizza un insieme di oggetti a Get-Member, Get-Member ottiene i membri di ogni elemento dell'insieme.

Il primo comando ottiene i servizi nel computer locale e li salva nella variabile $S.

Il secondo comando reindirizza la variabile $S al cmdlet Get-Member . Get-Member ottiene i tipi di ogni membro di $S e i membri di tale tipo. In questo caso, ottiene gli oggetti ServiceController ed elenca i membri, ad esempio RequiredServices e Close.

Il terzo comando utilizza il parametro InputObject di Get-Member per inviare la variabile $S. Get-Member ottiene il tipo (System.Object[]) e i membri della raccolta (o matrice) di oggetti ServiceController , ad esempio Count e Clone.

Parametri

-Force

Aggiunge alla visualizzazione i membri intrinseci (PSBase, PSAdapted, PSObject, PSTypeNames) e i metodi get_ e set_ generati dal compilatore. Per impostazione predefinita, Get-Member ottiene queste proprietà in tutte le visualizzazioni diverse da Base e Adapted, ma non le visualizza.

Nell'elenco seguente vengono descritte le proprietà che vengono aggiunte quando si utilizza il parametro Force :

  • PSBase: le proprietà originali dell'oggetto .NET Framework senza estensione o adattamento. Si tratta delle proprietà definite per la classe di oggetti ed elencate in MSDN.
  • PSAdapted. Proprietà e metodi definiti nel sistema di tipi estesi di Windows PowerShell.
  • PSExtended. Le proprietà e i metodi aggiunti nei file Types.ps1xml o utilizzando il cmdlet Add-Member.
  • PSObject. Adattatore che converte l'oggetto di base in un oggettoPSObject di Windows PowerShell.
  • PSTypeNames. Elenco di tipi di oggetto che descrivono l'oggetto, in ordine di specificità. Durante la formattazione dell'oggetto, Windows PowerShell cerca i tipi nei file Format.ps1xml nella directory di installazione di Windows PowerShell ($pshome). Utilizza la definizione di formattazione per il primo tipo trovato.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-InputObject

Specifica l'oggetto di cui vengono recuperati i membri.

L'utilizzo del parametro InputObject non equivale a reindirizzare un oggetto a Get-Member. Le differenze sono le seguenti:

  • Quando si invia un insieme di oggetti a Get-Member, Get-Member ottiene i membri dei singoli oggetti nell'insieme, ad esempio le proprietà di ogni stringa in una matrice di stringhe.
  • Quando si utilizza InputObject per inviare un insieme di oggetti, Get-Member ottiene i membri dell'insieme, ad esempio le proprietà della matrice in una matrice di stringhe.

Proprietà dei parametri

Tipo:PSObject
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-MemberType

Specifica il tipo di membro ottenuto da questo cmdlet. Il valore predefinito è Tutti.

I valori accettabili per questo parametro sono:

  • AliasProperty
  • CodeProperty
  • Proprietà
  • NotaProprietà
  • ScriptProperty
  • Proprietà
  • PropertySet
  • Metodo
  • CodeMethod
  • ScriptMethod
  • Metodi
  • Proprietà parametrizzata
  • MemberSet
  • Evento
  • Dinamico
  • Tutti

Per informazioni su questi valori, vedere Enumerazione PSMemberTypes in MSDN Library.

Non tutti gli oggetti hanno ogni tipo di membro. Se si specifica un tipo di membro che l'oggetto non possiede, Windows PowerShell restituisce un valore Null.

Per ottenere tipi di membri correlati, ad esempio tutti i membri estesi, utilizzare il parametro View . Se si utilizza il parametro MemberType con i parametri Static o View , Get-Member ottiene i membri che appartengono a entrambi i set.

Proprietà dei parametri

Tipo:PSMemberTypes
Valore predefinito:None
Valori accettati:AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All
Supporta i caratteri jolly:False
DontShow:False
Alias:TIPO

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Name

Specifica i nomi di una o più proprietà o metodi dell'oggetto. Get-Member ottiene solo le proprietà e i metodi specificati.

Se si utilizza il parametro Name con il parametro MemberType, View o Static , Get-Member ottiene solo i membri che soddisfano i criteri di tutti i parametri.

Per ottenere un membro statico in base al nome, utilizzare il parametro Static con il parametro Name .

Proprietà dei parametri

Tipo:

String[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:0
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Static

Indica che questo cmdlet ottiene solo le proprietà statiche e i metodi dell'oggetto.

Le proprietà e i metodi statici vengono definiti nella classe di oggetti, non in una particolare istanza della classe.

Se si utilizza il parametro Static con il parametro View , il parametro View viene ignorato. Se si utilizza il parametro Static con il parametro MemberType , Get-Member ottiene solo i membri che appartengono a entrambi i set.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-View

Specifica che questo cmdlet ottiene solo tipi, proprietà e metodi specifici. Specificare uno o più valori. L'impostazione di default è Adattato (Adapted), Esteso (Extended).

I valori validi sono:

  • Base. Ottiene solo le proprietà e i metodi originali dell'oggetto .NET Framework (senza estensione o adattamento).
  • Adattato. Ottiene solo le proprietà e i metodi definiti nel sistema di tipi estesi di Windows PowerShell.
  • Esteso. Ottiene solo le proprietà e i metodi aggiunti nei file Types.ps1xml o utilizzando il cmdlet Add-Member.
  • Tutti. Ottiene i membri nelle viste Base, Adattato ed Esteso.

Il parametro View determina i membri recuperati, non solo la visualizzazione di tali membri.

Per ottenere tipi di membri specifici, ad esempio le proprietà dello script, utilizzare il parametro MemberType . Se si utilizzano i parametri MemberType e View nello stesso comando, Get-Member ottiene i membri che appartengono a entrambi i set. Se si utilizzano i parametri Static e View nello stesso comando, il parametro View viene ignorato.

Proprietà dei parametri

Tipo:PSMemberViewTypes
Valore predefinito:None
Valori accettati:Extended, Adapted, Base, All
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

PSObject

È possibile reindirizzare qualsiasi oggetto a Get-Member.

Output

MemberDefinition

Get-Member restituisce un oggetto per ogni proprietà o metodo ottenuto.

Note

  • È possibile ottenere informazioni su un oggetto insieme utilizzando il parametro InputObject o reindirizzando l'oggetto, preceduto da una virgola, a Get-Member.

    È possibile utilizzare la variabile automatica $This nei blocchi di script che definiscono i valori di nuove proprietà e metodi. La variabile $This si riferisce all'istanza dell'oggetto a cui vengono aggiunte le proprietà e i metodi. Per ulteriori informazioni sulla variabile $This, vedere about_Automatic_Variables.