Condividi tramite


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

PSObject

È possibile inviare tramite pipe qualsiasi oggetto a Get-Member.

Output

MemberDefinition

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.