Get-Member în PowerShell

Primii pași Windows PowerShell 1.0

Arată tipul obiectelor dintr-un pipeline și ce proprietăți și metode au, ca să știi ce poți selecta, filtra sau apela.

Sintaxă
<comandă> | Get-Member [[-Name] <String[]>] [-MemberType <PSMemberTypes>] [-Static] [-Force]

Ce face Get-Member

În PowerShell, comenzile trimit obiecte, nu text. Get-Member (alias gm) îți arată ce fel de obiect primești: prima linie, TypeName, este tipul .NET, iar tabelul listează membrii, cu tipul lor (Property, Method, NoteProperty, ScriptProperty…) și definiția. Lista e sortată alfabetic, cu metodele înaintea proprietăților.

Îl folosești când nu știi cum se numește o proprietate: Get-ChildItem | Get-Member arată că fișierele au Length, LastWriteTime, Extension, pe care le poți folosi apoi în Where-Object, Sort-Object sau Select-Object.

Când trimiți prin pipeline o colecție, Get-Member descrie elementele (câte un bloc pentru fiecare tip diferit). Dacă vrei membrii colecției însăși (de exemplu ai unui tablou), folosește Get-Member -InputObject $tablou.

Parametri

Parametru Descriere
-Name Doar membrii cu numele dat.
-MemberType Doar un tip de membru: Property, Method, NoteProperty, ScriptProperty, Properties, Methods, All…
-Static Membrii statici ai clasei (de exemplu [math] | Get-Member -Static).
-Force Include și membrii intrinseci (psobject, psbase) și metodele get_/set_.
-InputObject Obiectul analizat; o colecție dată aici e tratată ca un singur obiect.

Ce returnează

Câte un obiect MemberDefinition pentru fiecare proprietate sau metodă găsită.

Exemple

Exemplul 1: Proprietățile unui șir de caractere

Un text are o singură proprietate, Length; restul membrilor sunt metode.

'Iași' | Get-Member -MemberType Property

Ieșire în terminal

   TypeName: System.String

Name   MemberType Definition
----   ---------- ----------
Length Property   int Length {get;}

Exemplul 2: Proprietățile unui obiect creat de tine

Câmpurile unui [pscustomobject] apar ca NoteProperty, cu tipul și valoarea lor.

[pscustomobject]@{ Nume = 'Ana'; Oras = 'Iași' } | Get-Member -MemberType NoteProperty

Ieșire în terminal

   TypeName: System.Management.Automation.PSCustomObject

Name MemberType   Definition
---- ----------   ----------
Nume NoteProperty string Nume=Ana
Oras NoteProperty string Oras=Iași

Exemplul 3: Ce poți afla despre un fișier

Ceri doar două proprietăți ale unui fișier, ca să vezi tipul lor înainte să le folosești la sortare.

Get-Item C:\Proiecte\facturi\ianuarie.pdf | Get-Member -Name Length, LastWriteTime

Ieșire în terminal

   TypeName: System.IO.FileInfo

Name          MemberType Definition
----          ---------- ----------
LastWriteTime Property   datetime LastWriteTime {get;set;}
Length        Property   long Length {get;}

Greșeli frecvente

  • Să pui Get-Member după Format-Table sau Format-List: vei vedea obiecte de formatare, nu datele tale. Pune-l înaintea comenzilor Format-*.
  • Să crezi că $tablou | Get-Member descrie tabloul: descrie elementele lui. Pentru tablou folosește -InputObject.
  • Să cauți o proprietate după numele coloanei afișate: unele coloane din tabelele implicite (de exemplu CPU(s) la procese) sunt etichete calculate, iar numele real al proprietății îl afli din Get-Member.

Comenzi înrudite

  • Pipeline (|): Operatorul | trimite obiectele unei comenzi, unul câte unul, comenzii următoare; $_ este obiectul curent, iar && și || înlănțuie comenzi.
  • Get-Command: Găsește comenzile disponibile (cmdlet-uri, funcții, aliasuri, programe); Get-Alias arată ce comandă se ascunde în spatele unui alias.
  • Select-Object: Alege doar anumite proprietăți ale obiectelor, adaugă proprietăți calculate sau păstrează primele, ultimele ori unicele elemente.
  • Variabile și tipuri: Variabilele încep cu $, primesc orice obiect .NET și pot fi legate de un tip ([int], [string], [datetime]); .GetType() arată tipul.