"Geek" mokykla: "PowerShell" mokymosi formatavimas, filtravimas ir palyginimas

Turinys:

"Geek" mokykla: "PowerShell" mokymosi formatavimas, filtravimas ir palyginimas
"Geek" mokykla: "PowerShell" mokymosi formatavimas, filtravimas ir palyginimas

Video: "Geek" mokykla: "PowerShell" mokymosi formatavimas, filtravimas ir palyginimas

Video:
Video: Tools I use for Remoting in on Windows and Linux 2024, Balandis
Anonim
Šiame "Geek" mokyklos leidime mes ieškome "Pipeline" objektų formatavimo, filtravimo ir palyginimo galimybių.
Šiame "Geek" mokyklos leidime mes ieškome "Pipeline" objektų formatavimo, filtravimo ir palyginimo galimybių.

Būtinai perskaitykite ankstesnius serijos straipsnius:

  • Sužinokite, kaip automatizuoti "Windows" su "PowerShell"
  • Mokytis naudotis "PowerShell" kompiliacijomis
  • Mokymasis naudoti objektus PowerShell

Ir visada sekite visą seriją likusiai savaitę.

Numatytasis formatavimas

Kai aš pirmą kartą pradėjau veikti su "PowerShell", maniau, kad viskas yra magija, bet tiesa, tai tik trunka šiek tiek laiko suprasti, kas vyksta po gaubtu. Tas pats pasakytina apie "PowerShell" formatavimo sistemą. Iš tikrųjų, jei paleidžiate "Get-Service" cmdlet, generuota produkcija rodo tik 3 savybes: būseną, pavadinimą ir "DisplayName".

Bet jei jūs naudojate "Get-Service" į "Get-Member", jūs pastebėsite, kad "ServiceController" objektai turi daug daugiau nei tik trys ypatybės, taigi kas vyksta?
Bet jei jūs naudojate "Get-Service" į "Get-Member", jūs pastebėsite, kad "ServiceController" objektai turi daug daugiau nei tik trys ypatybės, taigi kas vyksta?
Atsakymas yra paslėptas failas, kuris apibrėžia, kaip dauguma įterptų cmdlet rodo savo produkciją. Norėdami suprasti, įveskite į apvalkalą ir paspauskite enter.
Atsakymas yra paslėptas failas, kuris apibrėžia, kaip dauguma įterptų cmdlet rodo savo produkciją. Norėdami suprasti, įveskite į apvalkalą ir paspauskite enter.

notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

Jei naudosime funkciją "Notepad" Find, mes galime greitai pereiti į skyrių, kuriame išsamiai aprašoma "Get-Service" cmdlet išvestis, ieškodami "ServiceController" tipo.

Staiga, jūs galite pamatyti, kad po gaubtu PowerShell formuoja bet kokius duobutės objektus, kurie yra tipo ServiceController, ir kuria lentelę su trimis stulpeliais: būsena, pavadinimas ir DisplayName. Bet ką daryti, jei tipas, su kuriuo susiduriame, neturi įrašo toje byloje arba bet kokio kito formato bylos? Na, tai tikrai paprasta. Jei dujotiekio išeinantis objektas turi 5 ar daugiau savybių, PowerShell sąraše parodo visas objekto savybes; jei jis turi mažiau nei 5 savybes, jis rodomas lentelėje.
Staiga, jūs galite pamatyti, kad po gaubtu PowerShell formuoja bet kokius duobutės objektus, kurie yra tipo ServiceController, ir kuria lentelę su trimis stulpeliais: būsena, pavadinimas ir DisplayName. Bet ką daryti, jei tipas, su kuriuo susiduriame, neturi įrašo toje byloje arba bet kokio kito formato bylos? Na, tai tikrai paprasta. Jei dujotiekio išeinantis objektas turi 5 ar daugiau savybių, PowerShell sąraše parodo visas objekto savybes; jei jis turi mažiau nei 5 savybes, jis rodomas lentelėje.

Jūsų duomenų formatavimas

Jei nesate patenkintas numatytu objekto ar tipo formatu, galite pakartoti savo formatavimą. Tam reikia tris cmdlet, kurias reikia žinoti.

  • Formatinis sąrašas
  • Formato lentelė
  • Formatas-Wide
Image
Image

Formatas-Wide tiesiog surenka objektų rinkinį ir parodo kiekvieno objekto vieną nuosavybę. Pagal nutylėjimą jis ieškos vardo nuosavybės; jei jūsų objektuose nėra vardo nuosavybės, jis naudos pirmąją objekto nuosavybę, kai savybės bus rūšiuojamos abėcėlės tvarka.

Get-Service | Format-Wide

Kaip matote, jis taip pat nustato du stulpelius pagal numatytuosius nustatymus, tačiau galite nurodyti, kokį turinį norite naudoti, ir kiek stulpelių norite rodyti.
Kaip matote, jis taip pat nustato du stulpelius pagal numatytuosius nustatymus, tačiau galite nurodyti, kokį turinį norite naudoti, ir kiek stulpelių norite rodyti.

Get-Service | Format-Wide -Property DisplayName -Column 6

Jei pagal numatytuosius nustatymus kažkas pagal formatą pateikiamas kaip lentelė, visada galite jį pakeisti sąrašo rodiniu naudodami cmdlet Format-List. Paimkime "Get-Process" cmdlet išvesties vaizdą.
Jei pagal numatytuosius nustatymus kažkas pagal formatą pateikiamas kaip lentelė, visada galite jį pakeisti sąrašo rodiniu naudodami cmdlet Format-List. Paimkime "Get-Process" cmdlet išvesties vaizdą.
Image
Image

Šis lentelės vaizdas iš tikrųjų tinka šiai informacijai labai gerai, bet mes darome prielaidą, kad norime jį peržiūrėti sąrašo formoje. Viskas, ką turime tikrai padaryti, tai vamzdis Formatinis sąrašas.

Get-Process | Format-List

Kaip matote, pagal numatytuosius nustatymus sąraše rodomi tik keturi elementai. Norėdami peržiūrėti visas objekto savybes, galite naudoti pakaitos simbolį.
Kaip matote, pagal numatytuosius nustatymus sąraše rodomi tik keturi elementai. Norėdami peržiūrėti visas objekto savybes, galite naudoti pakaitos simbolį.

Get-Process | Format-List –Property *

Arba galite pasirinkti tik tas savybes, kurias norite.
Arba galite pasirinkti tik tas savybes, kurias norite.

Get-Process | Format-List –Property name,id

Image
Image

Formato lentelė kita vertus, perima duomenis ir paverčia jį į lentelę. Kadangi mūsų duomenys iš "Get-Process" jau yra lentelės pavidalu, mes galime jį naudoti norėdami lengvai pasirinkti norimus rodinius lentelėje. Aš naudoju parametrą AutoSize, kad visi duomenys būtų tinkami vienam ekranui.

Get-Process | Format-Table name,id –AutoSize

Image
Image

Filtravimas ir palyginimas

Vienas geriausių dalykų, susijusių su objektyvais vamzdynais, yra tai, kad jūs bet kuriuo etapu galite filtruoti objektus iš dujotiekio naudodami "Where-Object" cmdlet.

Get-Service | Where-Object {$_.Status -eq “Running”}

Naudojimasis tais atvejais, kai objektas yra labai paprastas. $ rodo dabartinį vamzdyno objektą, iš kurio galite pasirinkti nuosavybę, kurią norite filtruoti. Čia buvo tik laikomi objektai, kuriuose statusas yra lygus bėgimui. Yra keletas palyginimo operatorių, kuriuos galite naudoti filtro scenarijų bloku:
Naudojimasis tais atvejais, kai objektas yra labai paprastas. $ rodo dabartinį vamzdyno objektą, iš kurio galite pasirinkti nuosavybę, kurią norite filtruoti. Čia buvo tik laikomi objektai, kuriuose statusas yra lygus bėgimui. Yra keletas palyginimo operatorių, kuriuos galite naudoti filtro scenarijų bloku:
  • eq (lygus)
  • neq (ne lygus)
  • gt (didesnis nei)
  • ge (didesnis nei lygus arba didesnis)
  • lt (mažiau nei)
  • Le (mažiau nei lygi)
  • panašūs ("Wildcard String Match")

Išsamų sąrašą ir daugiau informacijos galima rasti schemos "about_comparison" koncepcijos pagalbos byloje, tačiau tai prireikia šiek tiek laiko priprasti prie "Where-Obeject" sintaksės. Tai visa tai šiuo metu!

Rekomenduojamas: