19Aug

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

Š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"
  • Mokymasis naudoti "PowerShell" "PowerShell"
  • kompiliacijas. "
  • " mokymasis naudoti objektus "PowerShell"

. Visą savaitę palaikykite ryšį su likusia serija.

numatytasis formatavimas

Kai aš pirmą kartą pradėjau veikti su "PowerShell", aš 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".

Tačiau, jei jūs naudojate "Get-Service" į "Get-Member", pamatysite, kad "ServiceController" objektai turi daug daugiau nei tik trys ypatybės, taigi kas vyksta?

Atsakymas yra paslėptame faile, kuriame apibrėžiama, kaip dauguma įtaisytų cmdletų rodo savo produkciją.Norėdami suprasti, įveskite į apvalkalą ir paspauskite enter.

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

Jei mes naudojame "Notepad" funkciją "Rasti", mes galime greitai pereiti į skyrių, kuriame išsamiai išgauna "cmdlet" Get-Service, ieškodami ServiceControllertipo

Staiga galite pamatyti, kad po gaubtu PowerShell formato bet kokius duobutės objektus, kurie yra tipo ServiceController, ir kurdami lentelę su trimis stulpeliais: būsena, pavadinimas ir DisplayName. Bet ką daryti, jei tipas, su kuriuo susiduriame, neturi šio failo įrašo arba bet kokio kito formato failo? Na, tai visai paprasta. Jei dujotiekio išeinantis objektas turi 5 ar daugiau savybių, PowerShell parodo visas objekto savybes sąraše;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 ištrinti savo formatavimą.Tam reikia tris cmdlet, kurias reikia žinoti.

  • formato sąrašas
  • Formato lentelė
  • Format Wide

Format 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 |Formatas-Platus

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 |Formatas Wide-Properties DisplayName-6-asis skiltis

Jei pagal numatytuosius nustatymus kažkas pagal formatavimą pateikiamas kaip lentelė, visada galite jį pakeisti sąrašo rodiniu naudodami cmdlet Format-List. Pažvelkime į "Get-Process" cmdlet produkciją.

Šis lentelės vaizdas iš tikrųjų tinka šiai informacijai labai gerai, bet tegul apsimeta, kad norime jį peržiūrėti sąrašo formoje. Viskas, ką turime padaryti, yra vamzdis į Formatų sąrašą .

Get-Process |Formatinis sąrašas

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 |Formatas-List-Properties *

Arba galite pasirinkti tik tas savybes, kurias norite.

Get-Process |Formato sąrašas-nuosavybės pavadinimas, ID

formato lentelė, , kita vertus, priima 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 |Formato lentelės pavadinimas, id-AutoSize

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

Get-Service |Kur objektas{ $ _. 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:

  • eq( lygus)
  • neq( ne lygus)
  • gt( didesnis nei)
  • ge( didesnis už arba lygus)
  • lt( mažiau nei)
  • le( mažesnis arba lygus)
  • panašus( Wildcard String Match)

Išsamų sąrašą ir daugiau informacijos galima rasti schemos "help" byloje about_comparison, tačiau prireiks šiek tiek laiko priprasti prie "Where-Obeject" sintaksės. Tai viskas šiais laikais!