2009-03-20 14 views
11

Una domanda newbie:Come utilizzare PowerShell Get-Member cmdlet

Il comando:

[Math] | Get-Member 

Restituisce tutti i membri della System.RuntimeType. Perché?

anche il comando:

Get-Member -InputObject [Math] 

Restituisce tutti i membri della System.String. Se [Math] viene interpretato come stringa qui, come posso renderlo un oggetto matematico?

Inoltre, lo Get-member accetta parametri posizionali? Come posso dire?

risposta

19

Si sta ottenendo un System.RuntimeType da [Math] perché questo è quello che è. È un tipo di classe rispetto a un oggetto di quel tipo particolare. Non hai effettivamente costruito un oggetto [Math]. Si otterrà lo stesso risultato se si è digitato:

[String] | gm 

Tuttavia, se hai costruito un oggetto stringa dal tipo String, si otterrebbe i membri della stringa:

PS C:\> [String]("hi") | gm 


    TypeName: System.String 

Name    MemberType   Definition 
----    ----------   ---------- 
Clone   Method    System.Object Clone() 
CompareTo  Method    System.Int32 CompareTo(Object value), System.Int32 CompareTo(String strB) 
Contains   Method    System.Boolean Contains(String value) 
CopyTo   Method    System.Void CopyTo(Int32 sourceIndex, Char[] destination, Int32 destinationIn... 
etc... 

Dal momento che ha solo System.Math membri statici, non è possibile costruirne un oggetto. Per vederli membri è possibile utilizzare la funzione GetMembers() di System.RuntimeType:

[Math].GetMethods() 

È possibile utilizzare uno dei cmdlet Formato- * per formattare l'output:

[Math].GetMethods() | format-table 

Edit: Oh, e devo aggiungere, di avvalersi di uno dei membri statici, si dovrebbe fare in questo modo:

[Math]::Cos(1.5) 
1

Inoltre, il membro Get prende i parametri di posizione ? Come posso dire?

Se il nome del parametro è racchiuso tra "[]", il nome è facoltativo, quindi il parametro è posizionale. Ad esempio per Get-Member (definizione sotto), Name è posizionale ma InputObject no.

Get-Member [[-Nome]] [-Force] [-InputObject] [-MemberType {AliasProperty | CodiceProprietà | Pro perty | NoteProprietà | ScriptProperty | Proprietà | PropertySet | Metodo | CodeMethod | ScriptMethod | Metodi | P arameterizedProperty | MemberSet | Evento | Tutti}] [-Static] [-View {Esteso | Adattato | Base | Tutto}] []

per il 1 ° 2 domande, sembra che tu li aspetta a comportarsi come oggetti, ma si sta entrando in uno spazio dei nomi/class. Se fai "1 | gm" o "gm -inputobject 1" vedrai più o meno quello che vuoi/aspetti.

6

ho appena scritto un blog post on exploring static members of classes with PowerShell, che potrebbe aiutare.

Cosa accade quando si esegue il pipe [Math] su Get-Member, si passa a un oggetto di System.RunTimeType e vengono restituiti i membri di quel tipo.

C'è un parametro switch per Get-membro che consente di esaminare tutti i membri statici di una classe:

[Math] | get-member -static 

Se hai bisogno di trovare membri di istanza, sarà necessario creare un'istanza della classe e pipa che per ottenere-membro.

1
  1. Utilizzando il comando get-member get-help, si ottiene questa uscita

NOME Get-Member

SINOSSI Ottiene le proprietà ei metodi degli oggetti.

SYNTAX Get-Member [[-Name]] [-Force] [-InputObject] [-MemberType {AliasProperty | CodiceProprietà | Pro perty | NotaProprietà | ScriptProperty | Proprietà | PropertySet | Metodo | CodeMethod | ScriptMethod | Metodi | P proprietà arameterizzata | MemberSet | Evento | Tutti}] [-Static] [-View {Extended | Adattato | Base | Tutto}] []

DESCRIZIONE Il cmdlet Get-Member ottiene i "membri" (proprietà e metodi) degli oggetti.

To specify the object, use the InputObject parameter or pipe an object to Get-Member. To retrieve information about 
static members (members of the class, not of the instance), use the Static parameter. To get only certain types of 
members, such as NoteProperties, use the MemberType parameter. 

LINK UTILI versione online: http://go.microsoft.com/fwlink/?LinkID=113322 Add-Member Get-Help Get-Command Get-PSDrive

OSSERVAZIONI Per vedere gli esempi, tipo: "Get-Help Get-Member -examples". Per ulteriori informazioni, digitare: "get-help Get-Member -detailed". Per informazioni tecniche, digitare: "get-help Get-Member -full".

  1. Dalla dichiarazione precedente, mostra che get-member accetta solo oggetti e non classi. Si utilizza -Static per visualizzare i membri statici di un oggetto.

  2. Quando si utilizza [String] senza il parametro -Static, si comunica a PowerShell che si sta inserendo un oggetto di tipo [String], tuttavia, non è stato ancora creato un oggetto String da alcuna istruzione, quindi si presuppone che [String] è un oggetto System.Runtime che rappresenta la classe String.Questo è simile se si utilizza [Int] o [Boolean] e altri tipi di classe.

  3. Tuttavia, se si utilizza il parametro -Static, l'interprete di PowerShell ora comprende che si desidera che i membri Statici di Oggetti stringa.

Problemi correlati