If-Koubou

Geek School: Oblikovanje učenja, filtriranje i uspoređivanje u PowerShellu

Geek School: Oblikovanje učenja, filtriranje i uspoređivanje u PowerShellu (Kako da)

U ovom izdanju Geek škole gledamo na oblikovanje, filtriranje i uspoređivanje objekata u Cjevovodu.

Obavezno pročitajte prethodne članke serije:

  • Saznajte kako automatizirati sustav Windows pomoću programa PowerShell
  • Učenje pomoću Cmdletsa u PowerShellu
  • Učenje kako koristiti objekte u PowerShellu

I ostanite u tijeku cijele serije cijeli tjedan.

Zadano je oblikovanje

Kad sam prvi put počeo s PowerShellom, mislio sam da je sve magija, ali istina je da treba samo malo vremena da shvatim što se događa ispod nape. Isto vrijedi i za sustav oblikovanja PowerShell. Zapravo, ako pokrenete cmdlet Get-Service, generirani output prikazuje samo 3 svojstva: Status, Naziv i DisplayName.

Ali ako dobijete Get-Service Get-Member, vidjet ćete da objekti ServiceControllera imaju mnogo više od ovih tri svojstva pa što se događa?

Odgovor leži u skrivenoj datoteci koja definira kako većina izgrađenih cmdleta prikazuje svoj izlaz. Da biste dobili razumijevanje, upišite sljedeće u ljusku i pritisnite enter.

Notepad C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

Ako koristimo funkciju za traženje Notepada, brzo možemo preskočiti do odjeljka koji sadrži pojedinosti o izlazu cmdleta Get-Service pretraživanjem tipa ServiceController.

Odjednom možete vidjeti da ispod konopa PowerShell oblikuje objekte u Pipelineu koji su tipa ServiceController i stvaraju tablicu s tri stupca: Status, Naziv i DisplayName. Ali što ako tip s kojim se bavite nema ulaz u tu datoteku ili bilo koju drugu datoteku formata za to? Pa, zapravo, zapravo je vrlo jednostavno. Ako objekt koji izlazi iz cjevovoda ima 5 ili više svojstava, PowerShell prikazuje sve svojstva objekta na popisu; ako ima manje od 5 svojstava, prikazuje ih u tablici.

Oblikovanje podataka

Ako niste zadovoljni s zadanim oblikovanjem objekta ili vrste, možete pokrenuti vlastiti oblikovanje. Za to morate znati tri cmdleta.

  • Format-List
  • Format-tablica
  • Format-Široki

Format-Široki jednostavno preuzima zbirku objekata i prikazuje pojedinačno svojstvo svakog objekta. Prema zadanim postavkama, tražit će naziv entiteta; ako vaši objekti ne sadrže naziv svojstva, ona će koristiti prvo svojstvo objekta nakon što su svojstva poredana abecednim redom.

Get-Service | Format-Široki

Kao što vidite, on također zadane postavke za dva stupca, iako možete odrediti i svojstvo koje želite koristiti, kao i koliko stupaca želite prikazati.

Get-Service | Format-širok -Property DisplayName - kolovoz 6

Ako je nešto prema zadanim postavkama oblikovano kao tablica, uvijek ga možete prebaciti na prikaz popisa pomoću cmdleta Format-List. Pogledajmo izlaz cmdeta Get-Processa.

Ovaj tablični prikaz stvarno odgovara ovoj vrsti informacija vrlo dobro, ali pretpostavimo da ga želimo pregledati u obliku popisa. Sve što zaista moramo učiniti je cijev Format-List.

Get-proces | Format-List

Kao što vidite, zadano se prikazuju samo četiri stavke na popisu. Da biste vidjeli sva svojstva objekta, možete upotrijebiti znak zamjenskih znakova.

Get-proces | Format-popis -Property *

Alternativno, možete odabrati samo one željene osobine.

Get-proces | Format-Popis -Property ime, id

Format-tablica, s druge strane, uzima podatke i pretvara ih u tablicu. Budući da su naši podaci iz Get-Procesa već u obliku tablice, možemo ga koristiti za jednostavno odabiranje željenih svojstava prikazanih u tablici. Koristio sam parametar AutoSize kako bi svi podaci odgovarali na jedan zaslon.

Get-proces | Format-naziv tablice, id -AutoSize

Filtriranje i uspoređivanje

Jedna od najboljih stvari o korištenju cjevovoda na temelju objekta jest da možete filtrirati objekte iz cjevovoda u bilo kojoj fazi pomoću cmdleta Where-Object.

Get-Service | Gdje-Objekt $ _. Status -eq "Trčanje"

Korištenje gdje je objekt zapravo vrlo jednostavan. $ _ predstavlja trenutačni objekt cjevovoda, od kojeg možete odabrati entitet na koji želite filtrirati. Ovdje su samo čuvali objekte gdje je Status svojstvo jednako Trčanje. Postoji nekoliko operatera usporedbe koje možete koristiti u bloku skripte za filtriranje:

  • eq (jednako)
  • neq (nije jednako)
  • gt (veće od)
  • ge (veća ili jednaka)
  • lt (manje od)
  • le (manje od ili jednako)
  • kao što je (podudaranje s podudaranjem žetona)

Potpuni popis i više informacija možete pogledati u konceptualnoj datoteci help_data, no potrebno je neko vrijeme navikavanje na sintaksu Where-Obeject. To je sve za ovo vrijeme!