19Aug

Geeki kool: PowerShellis õppimise vormindamine, filtreerimine ja võrdlemine

Selles Geeki kooli väljaandes vaatleme Pipeline'i objektide vormistamist, filtreerimist ja võrdlemist.

Kindlasti loete seriaale eelnenud artikleid:

  • Õppige Windowsi automatiseerimine PowerShelli
  • -ga Õppige kasutama PowerShellis olevaid kommutate
  • Õppige kuidas PowerShell

-s objekte kasutada Objekte tuleb jälgida kogu nädala jooksul.

vaikimisi vormindamine

Kui ma esimest korda PowerShelliga alustan, siis arvasin, et kõik on maagiline, kuid tõde on see, et lihtsalt mõeldakse seda, mis toimub kapoti all. Sama kehtib ka PowerShelli vormindussüsteemi kohta. Kui käivitate cmdlet Get-Service, kuvatakse ainult väljundis 3 omadust: olek, nimi ja DisplayName.

Aga kui kasutate Get-Service'i Get-liikmeks, näete, et ServiceControlleri objektidel on palju rohkem kui just need kolm omadust, nii et mis toimub?

Vastus on peidetud failis, mis määratleb, kuidas enamus sisseehitatud cmdletutest näitavad oma väljundit. Mõistmise saamiseks sisestage järgmine koopia ja vajutage sisestusklahvi.

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

Kui kasutame noteerimisfunktsiooni Find funktsiooni, võime kiiresti minna jaotisse, kus kirjeldatakse Get-Service'i cmdlet väljundit, otsides ServiceControllertüüp

Järsku näete, et kapoti all olev kujundus PowerShell vormindab kõik torujuhtme objektid, mis on ServiceControlleri tüüpi ja loovad kolme veergu sisaldava tabeli: Staatus, Nimi ja DisplayName. Kuid mis siis, kui tüübiga, millega te tegelete, ei ole selle faili kirjeid ega muid formaadifaile selles küsimuses? Noh, see on päris lihtne. Kui gaasijuhtmest väljuv objekt sisaldab 5 või enam omadust, kuvab PowerShell kõik objekti omadused loendis;kui see sisaldab vähem kui 5 omadust, kuvab see tabelis.

Andmete vormindamine

Kui te ei ole rahul objekti või tüübi vaikimisi vormindamisega, saate oma vormingut rullida. Selleks on vaja kolm cmdletti, mida pead teadma.

  • Format-List
  • Format-tabel
  • Format-Wide

Format-Wide võtab lihtsalt objektide kogumi ja kuvab iga objekti ühe omaduse. Vaikimisi otsib see nimevara;kui teie objektid ei sisalda nimeomadust, kasutab ta objekti esimest vara pärast seda, kui omadused on sorteeritud tähestikuliselt.

Get-Service |Format-Wide

Nagu näete, on see ka vaikimisi kahel veerul, kuigi saate määrata, millist vara soovite kasutada, kui ka seda, kui palju veerge soovite kuvada.

Get-Service |Format-Wide-Properties DisplayName -kolumn 6

Kui vaikimisi on mõni lahtris vormindatud tabel, saate selle alati loendi vaatesse lülitada, kasutades selleks vormingu-loendi käsku. Vaatame Get-Processi cmdlet väljundit.

See tabeli vaade sobib väga hästi sellisele teabele, kuid teeme ette, et tahame seda loendi vormis vaadata. Kõik, mida me peame tõesti tegema, on toru see vorminguplaanile .

Get-protsess |Formaat-loend

Nagu näete, on vaikimisi loendis ainult neli elementi. Kõigi objekti omaduste vaatamiseks võite kasutada metamärki.

Get-protsess |Formaat-List-Properties *

Võimalik on valida ka soovitud omadused.

Get-protsess |Vorming-List-Properties name, id

Format-Table, teisalt võtab andmeid ja muudab selle tabelisse. Kuna meie Get-Processist saadud andmed on juba tabeli kujul, võime seda kasutada, et lihtsalt valida tabelis kuvatavad omadused. Ma kasutasin parameetrit AutoSize, et kõik andmed sobiksid ühele ekraanile.

Get-protsess |Formaat-tabeli nimi, id-AutoSize

filtreerimine ja võrdlemine Üks objektoripõhise torujuhtme kasutamise parimatest asjadest on see, et saate objektidest torujuhtmetest välja filtreerida mis tahes etapis, kasutades Where-Objekti cmdletti.

Get-Service |Kus-Objekt{ $ _. Status -eq "Käivitamine"}

Kasutades objekti tegelikult väga lihtsat kasutamist.$ _ tähistab praegust torujuhtme objekti, kust saate valida vara, mida soovite filtreerida. Siin olid ainult objektide hoidmine, kus oleku vara võrdub käitamisega. Filtreerimiskriptplokil on mõned võrdlusoperaatorid:

  • eq( võrdsed)
  • neq( mitte võrdne)
  • gt( suurem kui)
  • ge( suurem kui võrdne)
  • ( vähem kui)
  • le( alla või võrdsed)
  • -ga sarnane( Wildcard String Match)

Täiste nimekirja ja lisateavet saab vaadata umbes-võrdluse kontseptuaalse abifaili puhul, kuid see võtab veidi aega, kui kasutatakse kus-Obejekti süntaksit. See on kõik selleks ajaks!