Get-Member
Ottiene le proprietà e i metodi degli oggetti.
Sintassi
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 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 .
Esempio
Esempio 1: Ottenere i membri degli oggetti di 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 visualizza le proprietà e metodi degli oggetti processo (System.ServiceProcess.ServiceController) generati dal cmdlet Get-Service.
Il comando usa l'operatore pipeline (|) per inviare l'output di un comando Get-Service a Get-Member.
Poiché la parte Get-Member del comando non ha parametri, usa tutti i valori predefiniti. Di conseguenza, ottiene tutti i tipi di membro, ma non i membri statici e non vengono visualizzati membri intrinseci.
Esempio 2: Ottenere membri degli oggetti servizio
PS> Get-Service | Get-Member -Force
PS> (Get-Service Schedule).PSBase
Questo esempio ottiene tutti i membri (proprietà e metodi) degli oggetti servizio (System.ServiceProcess.ServiceController) recuperati dal cmdlet Get-Service, inclusi i membri intrinseci, come PSBase e PSObject, e i metodi get_ and set_.
Il primo comando usa il cmdlet Get-Service per ottenere oggetti che rappresentano i servizi nel sistema. Usa un operatore pipeline (|) per passare gli oggetti servizio al cmdlet Get-Member .
Il comando Get-Member usa il parametro Force per aggiungere i membri intrinseci e i membri generati dal compilatore degli oggetti alla visualizzazione. Get-Member ottiene questi membri, ma li nasconde per impostazione predefinita.
È 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 Schedule.
Esempio 3: Ottenere membri estesi degli 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 estesi usando il file Types.ps1xml o il cmdlet Add-Member.
Il comando Get-Member 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 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 recupera le proprietà di script degli oggetti del registro eventi del Registro di sistema nel Visualizzatore eventi.
Il comando usa il parametro MemberType per ottenere solo gli oggetti con un valore ScriptProperty per la relativa 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 archivia i nomi di diversi cmdlet nella variabile $A.
Il secondo comando usa un'istruzione ForEach per richiamare ogni comando, inviare i risultati a Get-Member e limitare i risultati da 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) hanno una proprietà MachineName.
Esempio 6: Ottenere 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
Questo esempio dimostra 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 usa il parametro InputObject . Usa il simbolo at (@) per indicare una matrice. In questo caso, la matrice contiene un solo oggetto, il numero intero 1.
Il terzo comando usa 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 usa la proprietà Count della matrice per trovare il numero di oggetti nella variabile $A.
Esempio 7: Determinare le proprietà dell'oggetto che è 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
Questo esempio mostra come determinare quali proprietà di un oggetto possono essere modificate. L'esempio usa un file, ma questo comando può essere usato 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 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 una raccolta, Get-Member ottiene i membri della raccolta. Quando si invia tramite pipe una raccolta 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 salva i servizi nella variabile $S.
Il secondo comando invia tramite pipe 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 usa il parametro InputObject di Get-Member per inviare la variabile $S. Get-Member ottiene il tipo (System.Object[]) e i membri dell'insieme (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à aggiunte quando si usa il parametro Force :
- PSBase: proprietà originali dell'oggetto .NET Framework senza estensione o adattamento. Queste sono le 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. proprietà e metodi aggiunti nei file Types.ps1xml o usando il cmdlet Add-Member.
- PSObject. Adattatore che converte l'oggetto di base in un oggetto Windows PowerShell PSObject.
- 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). Usa la definizione di formattazione per il primo tipo trovato.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specifica l'oggetto di cui vengono recuperati i membri.
L'uso del parametro InputObject non equivale all'invio tramite pipe 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 dell'insieme, ad esempio le proprietà della matrice in una matrice di stringhe.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MemberType
Specifica il tipo di membro che ottiene questo cmdlet. Il valore predefinito è Tutti.
I valori validi per questo parametro sono:
- AliasProperty
- Codeproperty
- Proprietà
- NotaProperty
- ScriptProperty
- Proprietà
- Propertyset
- Metodo
- CodeMethod
- ScriptMethod
- Metodi
- ParameterizedProperty
- MemberSet
- Evento
- Dynamic
- Tutti
Per informazioni su questi valori, vedere Enumerazione PSMemberTypes in MSDN Library.
No tutti gli oggetti hanno ogni tipo di membro. Se si specifica un tipo di membro che l'oggetto non ha, Windows PowerShell restituisce un valore Null.
Per ottenere i tipi di membri correlati, 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.
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
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, usare il parametro Static con il parametro Name .
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Static
Indica che questo cmdlet ottiene solo le proprietà e i metodi statici 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 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-View
Specifica che questo cmdlet ottiene solo proprietà e metodi specifici dei tipi. Specificare uno o più valori. Il valore predefinito è Adapted, Extended.
I valori validi sono:
- Base. ottiene solo le proprietà e 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 usando il cmdlet Add-Member.
- 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.
Type: | PSMemberViewTypes |
Accepted values: | Extended, Adapted, Base, All |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare tramite pipe qualsiasi oggetto a Get-Member.
Output
Get-Member restituisce un oggetto per ogni proprietà o metodo che ottiene.
Note
È possibile ottenere informazioni su un oggetto raccolta utilizzando il parametro InputObject o inviando tramite pipe l'oggetto, preceduto da una virgola, a Get-Member.
È possibile usare la variabile $This automatica nei blocchi di script che definiscono i valori di nuove proprietà e metodi. La variabile $This fa riferimento all'istanza dell'oggetto a cui vengono aggiunte le proprietà e i metodi. Per altre informazioni sulla variabile $This, vedere about_Automatic_Variables.