Condividi tramite


Get-Member

Ottiene le proprietà e i metodi degli oggetti.

Sintassi

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

Descrizione

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

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

Get-Member restituisce un elenco di membri ordinati alfabeticamente. I metodi vengono elencati per primi, seguiti dalle proprietà .

Esempio

Esempio 1: Ottenere i membri degli oggetti processo

Questo comando visualizza le proprietà e i metodi degli oggetti del servizio generati dal Get-Service cmdlet .

Poiché la Get-Member parte del comando non ha parametri, usa i valori predefiniti per i parametri. Per impostazione predefinita, Get-Member non ottiene membri statici o intrinseci.

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

Esempio 2: Ottenere membri degli oggetti servizio

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

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

Il Get-Member comando usa il parametro Force per aggiungere i membri intrinseci e i membri generati dal compilatore degli oggetti alla visualizzazione. È possibile usare questi metodi e queste proprietà come si userebbe un metodo adattato dell'oggetto. Il secondo comando mostra come visualizzare il valore della proprietà PSBase del servizio Pianificazione. Per altre informazioni sui membri intrinseci, vedere about_Intrinsic_Members

Esempio 3: Ottenere membri estesi degli oggetti servizio

Questo esempio ottiene i metodi e le proprietà degli oggetti servizio estesi usando un Types.ps1xml file o il 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();

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

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

In questo esempio vengono recuperate le proprietà dello script degli oggetti del log eventi nel log di sistema in Visualizzatore eventi.

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

Il parametro MemberType ottiene solo gli oggetti con un valore di NoteProperty per la proprietà MemberType .

Il comando restituisce la proprietà Message dell'oggetto EventLogRecord .

Esempio 5: Ottenere oggetti con una proprietà specificata

In questo esempio vengono restituiti oggetti con una proprietà MachineName nell'output da un elenco di cmdlet.

La $list variabile contiene un elenco di cmdlet da valutare. L'istruzione foreach richiama ogni comando e invia i risultati a Get-Member. Il parametro Name limita i risultati da Get-Member a membri con il 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;}

I risultati mostrano che solo gli oggetti processo e gli oggetti servizio hanno una proprietà MachineName .

Esempio 6: Ottenere membri per una matrice

In questo esempio viene illustrato come trovare i membri di una matrice di oggetti. Quando si invia tramite pipe e la matrice di oggetti a Get-Member, il cmdlet restituisce un elenco di membri per ogni tipo di oggetto univoco nella matrice. Se si passa la matrice usando il parametro InputObject , la matrice viene considerata come un singolo oggetto.

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

La $array variabile contiene un oggetto Int32 e un oggetto stringa , come illustrato quando la matrice viene inviata tramite pipe a Get-Member. Quando $array viene passato usando il parametro Get-Member InputObject restituisce i membri del tipo Object[].

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

Questo esempio mostra come determinare quali proprietà di un oggetto possono essere modificate.

$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

Esempio 8: Elencare le proprietà di un oggetto nell'ordine in cui sono stati creati

In questo esempio viene creato un nuovo PSObject e vengono aggiunte proprietà. Get-Member elenca le proprietà in ordine alfabetico. Per visualizzare le proprietà nell'ordine in cui sono state aggiunte all'oggetto, è necessario utilizzare il membro intrinseco 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

Parametri

-Force

Aggiunge i membri intrinseci e i metodi get_ generati dal compilatore e set_ alla visualizzazione. Nell'elenco seguente vengono descritte le proprietà aggiunte quando si usa il parametro Force :

  • PSBase: proprietà originali dell'oggetto .NET senza estensione o adattamento. Queste sono le proprietà definite per la classe oggetto.
  • PSAdapted: le proprietà e i metodi definiti nel sistema di tipi estesi di PowerShell.
  • PSExtended: proprietà e metodi aggiunti nei Types.ps1xml file o tramite il Add-Member cmdlet .
  • PSObject: adattatore che converte l'oggetto di base in un oggetto PSObject di PowerShell.
  • PSTypeNames: elenco di tipi di oggetto che descrivono l'oggetto, in ordine di specificità. Quando si formatta l'oggetto, PowerShell cerca i tipi nei Format.ps1xml file nella directory di installazione di PowerShell ($PSHOME). Usa la definizione di formattazione per il primo tipo trovato.

Per impostazione predefinita, Get-Member ottiene queste proprietà in tutte le visualizzazioni ad eccezione di Base e Adattato, ma non le visualizza.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-InputObject

Specifica l'oggetto di cui vengono recuperati i membri.

L'uso del parametro InputObject non equivale al piping di un oggetto a Get-Member. Le differenze sono le seguenti:

  • Quando si invia tramite pipe una raccolta 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 una raccolta di oggetti, Get-Member ottiene i membri della raccolta, ad esempio le proprietà della matrice in una matrice di stringhe.
Tipo:PSObject
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-MemberType

Specifica il tipo di membro che ottiene questo cmdlet. Il valore predefinito è All.

I valori validi per questo parametro sono:

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

Questi valori sono definiti come enumerazione basata su flag. È possibile combinare più valori per impostare più flag usando questo parametro. I valori possono essere passati al parametro MemberType come matrice di valori o come stringa delimitata da virgole di tali valori. Il cmdlet combina i valori usando un'operazione binary-OR. Il passaggio di valori come matrice è l'opzione più semplice e consente anche di usare il completamento tramite tabulazione sui valori.

Per informazioni su questi valori, vedere Enumerazione PSMemberTypes.

No tutti gli oggetti hanno ogni tipo di membro. Se si specifica un tipo di membro che l'oggetto non ha, PowerShell restituisce un valore Null. Per ottenere tipi correlati di membri, ad esempio tutti i membri estesi, usare 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.

Tipo:PSMemberTypes
Alias:Type
Valori accettati:AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly: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 per nome, usare il parametro Static con il parametro Name .

Tipo:String[]
Posizione:0
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Static

Indica che questo cmdlet ottiene solo le proprietà statiche e i metodi dell'oggetto . Proprietà e metodi statici sono definiti nella classe di oggetti, non in una particolare istanza della classe.

Se si usa il parametro Static con i parametri View o Force , il cmdlet ignora tali parametri. Se si utilizza il parametro Static con il parametro MemberType , Get-Member ottiene solo i membri che appartengono a entrambi i set.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-View

Specifica che questo cmdlet ottiene solo proprietà e metodi specifici dei tipi. Specificare uno o più valori. Il valore predefinito è Adattato, Esteso.

I valori validi per questo parametro sono:

  • Base. Ottiene solo le proprietà e i metodi originali dell'oggetto .NET (senza estensione o adattamento).
  • Adattato. Ottiene solo le proprietà e i metodi definiti nel sistema di tipi estesi di PowerShell.
  • Esteso. Ottiene solo le proprietà e i metodi aggiunti in un Types.ps1xml file o tramite il Add-Member cmdlet .
  • Tutti. ottiene i membri nelle visualizzazioni Base, Adapted ed Extended.

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, usare il parametro MemberType . Se si usano i parametri MemberType e View nello stesso comando, Get-Member ottiene i membri che appartengono a entrambi i set. Se si usano i parametri Static e View nello stesso comando, il parametro View viene ignorato.

Tipo:PSMemberViewTypes
Valori accettati:Extended, Adapted, Base, All
Posizione:Named
Valore predefinito:Adapted, Extended
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

PSObject

È possibile inviare tramite pipe qualsiasi oggetto a questo cmdlet.

Output

MemberDefinition

Questo cmdlet restituisce un MemberDefinition per ogni proprietà o metodo che ottiene.

Note

PowerShell include gli alias seguenti per Get-Member:

  • Tutte le piattaforme:
    • gm

È possibile ottenere informazioni su un oggetto raccolta usando il parametro InputObject o inviando tramite pipe l'oggetto, preceduto da una virgola, a Get-Member.

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

Se si passa un oggetto che rappresenta un tipo, ad esempio un valore letterale di tipo, ad esempio [int], Get-Member restituiscono informazioni sul [System.RuntimeType] tipo. Tuttavia, quando si utilizza il parametro Static , Get-Member restituisce i membri statici del tipo specifico rappresentato dall'istanza System.RuntimeType di .