Get-Member
Ottiene le proprietà e i metodi degli oggetti.
Sintassi
Get-Member [[-Name] <string[]>] [-Force] [-InputObject <psobject>] [-MemberType {<AliasProperty> | <CodeProperty> | <Property> | <NoteProperty> | <ScriptProperty> | <Properties> | <PropertySet> | <Method> | <CodeMethod> | <ScriptMethod> | <Methods> | <ParameterizedProperty> | <MemberSet> | <Event> | <All>}] [-Static] [-View {<Extended> | <Adapted> | <Base> | <All>}] [<CommonParameters>]
Descrizione
Il cmdlet Get-Member ottiene i "membri" (proprietà e metodi) degli oggetti.
Per specificare l'oggetto, utilizzare il parametro InputObject o reindirizzare un oggetto a Get-Member. Per recuperare informazioni sui membri statici (membri della classe, non dell'istanza), utilizzare il parametro Static. Per ottenere solo determinati tipi di membri, ad esempio NoteProperties, utilizzare il parametro MemberType.
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à aggiunte quando si utilizza il parametro Force:
-- PSBase: 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 esteso di Windows PowerShell.
-- PSExtended: proprietà e metodi aggiunti nei file Types.ps1xml o tramite il cmdlet Add-Member.
-- PSObject: adattatore che converte l'oggetto di base in un oggetto PSObject di Windows PowerShell.
-- PSTypeNames: elenco di tipi di oggetto che descrivono l'oggetto in ordine di specificità. Durante la formattazione dell'oggetto, vengono cercati i tipi nei file Format.ps1xml nella directory di installazione ($pshome) di Windows PowerShell. Viene utilizzata la definizione di formattazione per il primo tipo rilevato.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-InputObject <psobject>
Specifica l'oggetto i cui membri vengono recuperati.
L'utilizzo del parametro InputObject non corrisponde al reindirizzamento di un oggetto a Get-Member. Le differenze sono le seguenti.
-- Quando si reindirizza una raccolta di oggetti a Get-Member, Get-Member ottiene i membri dei singoli oggetti nella raccolta, ad esempio le proprietà dei valori interi in una matrice di valori interi.
-- 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 valori interi.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
true (ByValue) |
Accettare caratteri jolly? |
false |
-MemberType <PSMemberTypes>
Ottiene solo membri con il tipo di membro specificato. Il valore predefinito è All.
I valori validi per questo parametro sono:
-- AliasProperty: proprietà che definisce un nuovo nome per una proprietà esistente.
-- CodeMethod: metodo che fa riferimento a un metodo statico di una classe .NET Framework.
-- CodeProperty: proprietà che fa riferimento a una proprietà statica di una classe .NET Framework.
-- Event: specifica che l'oggetto invia un messaggio per indicare un'azione o una modifica di stato.
-- MemberSet: raccolta predefinita di proprietà e metodi, quali PSBase, PSObject e PSTypeNames.
-- Method: metodo dell'oggetto .NET Framework sottostante.
-- NoteProperty: proprietà con un valore statico.
-- ParameterizedProperty: proprietà che accetta parametri e valori di parametro.
-- Property: proprietà dell'oggetto .NET Framework sottostante.
-- PropertySet: raccolta predefinita di proprietà dell'oggetto.
-- ScriptMethod: metodo il cui valore è l'output di uno script.
-- ScriptProperty: proprietà il cui valore è l'output di uno script.
-- All: ottiene tutti i tipi di membro.
-- Methods: ottiene tutti i tipi di metodo dell'oggetto (ad esempio Method, CodeMethod, ScriptMethod).
-- Properties: ottiene tutti i tipi di proprietà dell'oggetto (ad esempio Property, CodeProperty, AliasProperty, ScriptProperty).
Non tutti gli oggetti dispongono di ogni tipo di membro. Se si specifica un tipo di membro di cui l'oggetto non dispone, in Windows PowerShell viene restituito un valore null.
Per ottenere i 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 consente di ottenere i membri che appartengono a entrambi gli insiemi.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Name <string[]>
Specifica i nomi di una o più proprietà o metodi dell'oggetto. Get-Member consente di ottenere 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.
Obbligatorio? |
false |
Posizione? |
1 |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-Static
Ottiene solo le proprietà e i metodi statici dell'oggetto.
Le proprietà e i metodi statici sono definiti nella classe di oggetti, non in qualsiasi istanza della classe.
Se si utilizza il parametro Static con il parametro View, il secondo parametro viene ignorato. Se si utilizza il parametro Static con il parametro MemberType, Get-Member ottiene solo i membri che appartengono a entrambi i set.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
-View <PSMemberViewTypes>
Ottiene solo determinati tipi di membri (proprietà e metodi). Specificare uno o più valori. Il valore predefinito è "Adapted, Extended".
I valori validi sono:
-- Base: ottiene solo i metodi e le proprietà originali dell'oggetto .NET Framework (senza estensione o adattamento).
-- Adapted: ottiene solo le proprietà e i metodi definiti nel sistema di tipi esteso di Windows PowerShell.
-- Extended: ottiene solo le proprietà e i metodi aggiunti nei file Types.ps1xml o tramite il cmdlet Add-Member.
-- All: ottiene i membri nelle visualizzazioni Base, Adapted ed Extended.
Il parametro View determina i membri recuperati, non solo la loro visualizzazione.
Per ottenere determinati tipi di membro, ad esempio le proprietà 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 secondo parametro viene ignorato.
Obbligatorio? |
false |
Posizione? |
named |
Valore predefinito |
|
Accettare input da pipeline? |
false |
Accettare caratteri jolly? |
false |
<CommonParameters>
Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.
Input e output
Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.
Input |
System.Management.Automation.PSObject È possibile reindirizzare qualsiasi oggetto a Get-Member. |
Output |
Microsoft.PowerShell.Commands.MemberDefinition Get-Member restituisce un oggetto per ogni proprietà o metodo ottenuti. |
Note
È possibile recuperare informazioni su un oggetto raccolta utilizzando il parametro InputObject o reindirizzando l'oggetto, preceduto da una virgola, a Get-Member.
Esempio 1
C:\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;}
Descrizione
-----------
Questo comando consente di visualizzare i metodi e le proprietà degli oggetti processo (System.ServiceProcess.ServiceController) generati dal cmdlet Get-Service.
Nel comando viene utilizzato 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. In questo modo, si ottengono tutti i tipi di membro, ma non i membri statici, e non vengono visualizzati i membri intrinseci.
Esempio 2
C:\PS>get-service | get-member -force
C:\PS> (get-service -schedule).psbase
Descrizione
-----------
In questo esempio si ottengono tutti i membri (proprietà e metodi) degli oggetti servizio (System.ServiceProcess.ServiceController) recuperati dal cmdlet Get-Service, inclusi i membri intrinseci, quali PSBase e PSObject, e i metodi get_ e set_.
Nel primo comando viene utilizzato il cmdlet Get-Service per ottenere gli oggetti che rappresentano i servizi nel sistema. Viene utilizzato un operatore pipeline (|) per passare gli oggetti servizio al cmdlet Get-Member.
Nel comando Get-Member viene utilizzato il parametro Force per aggiungere alla visualizzazione membri intrinseci e membri degli oggetti generati dal compilatore. Get-Member ottiene questi membri, ma li nasconde per impostazione predefinita.
È possibile utilizzare questi metodi e proprietà nello stesso modo in cui si utilizzerebbe un metodo adattato dell'oggetto. Nel secondo comando viene illustrato come visualizzare il valore della proprietà PSBase del servizio Schedule.
Esempio 3
C:\PS>get-service | get-member -view extended
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
Descrizione
-----------
Questo comando ottiene i metodi e le proprietà degli oggetti servizio estesi mediante 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, alias della proprietà ServiceName.
Esempio 4
C:\PS>get-eventlog -log system | gm -membertype scriptproperty
TypeName: System.Diagnostics.EventLogEntry
Name MemberType Definition
---- ---------- ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}
Descrizione
-----------
Con questo comando si ottengono le proprietà script di oggetti del registro eventi di sistema nel Visualizzatore eventi. In questo caso, l'unica proprietà script è EventID.
Esempio 5
C:\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;}
Descrizione
-----------
Con questo comando si ottengono le proprietà script di oggetti del registro eventi di sistema nel Visualizzatore eventi.
Nel comando viene utilizzato il parametro MemberType per ottenere solo gli oggetti con valore AliasProperty per la proprietà MemberType.
Viene restituita la proprietà EventID dell'oggetto EventLog.
Esempio 6
C:\PS>$a = "get-process", "get-service", "get-culture", "get-psdrive", "get-executionpolicy"
C:\PS> foreach ($cmdlet in $a) {invoke-expression $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;}
Descrizione
-----------
Con questo comando si ottengono gli oggetti che dispongono di una proprietà MachineName da un elenco di cmdlet.
Il primo comando archivia i nomi di diversi cmdlet nella variabile $a.
Nel secondo comando viene utilizzata un'istruzione ForEach per richiamare ciascun comando, inviare i risultati a Get-Member e limitare i risultati di Get-Member ai membri che dispongono del 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 7
C:\PS>$a = get-member -inputobject @(1)
C:\PS>$a.count
1
C:\PS> $a = get-member -inputobject 1,2,3
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Object& Address(Int32 )
Clone Method System.Object Clone()
...
C:\PS>$a.count
1
Descrizione
-----------
In questo esempio viene illustrato come trovare i metodi e le proprietà 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, nel primo comando viene utilizzato il parametro InputObject. Viene utilizzato il simbolo della a commerciale (@) per indicare una matrice. In questo caso, la matrice contiene solo un oggetto, il valore intero 1.
Nel terzo comando viene utilizzato il cmdlet Get-Member per ottenere le proprietà e i metodi di una matrice di valori interi, che vengono quindi salvati nella variabile $a.
Nel quarto comando viene utilizzata la proprietà Count della matrice per trovare il numero di oggetti nella variabile $a.