Geeki kooliõppe vormindamine, filtreerimine ja võrdlemine PowerShellis
Geeki kooli selles väljaandes vaatame torustiku objektide vormindamist, filtreerimist ja võrdlemist.
Lugege kindlasti seeria eelmisi artikleid:
- Lugege, kuidas Windowsi PowerShelli abil automatiseerida
- Õppimine kasutama Cmdleti PowerShellis
- Õppimine, kuidas kasutada objekte PowerShellis
Ja hoia ülejäänud sarja jaoks terve nädal.
Vaikimisi vormindamine
Kui ma esimest korda PowerShelliga alustasin, mõtlesin, et kõik oli maagiline, kuid tõde on see, et kulub natuke aega, et mõista, mis kapoti all toimub. Sama kehtib ka PowerShelli vormindussüsteemi kohta. Tegelikult, kui käivitate Get-Service'i cmdlet, kuvatakse genereeritud väljund ainult teile 3 omadust: olek, nimi ja DisplayName.
Aga kui sa saad teenust Get-Service Get-Memberi, siis näete, et ServiceControlleri objektidel on palju rohkem kui ainult need kolm omadust, nii et mis toimub?
Vastus peitub peidetud failis, mis määrab, kuidas enamik sisseehitatud cmdletidest kuvab nende väljundit. Mõistmise saamiseks kirjutage shellile järgmine tekst ja vajuta Enter.
notepad C: Windows System32 WindowsPowerShell1.0 DotNetTypes.format.ps1xml
Kui kasutame Notepadi otsingufunktsiooni, saame kiiresti minna selle jaotise juurde, mis täpsustab teenuse Get-Service cmdlet väljundit, otsides teenuseController tüüpi.
Järsku näete, et kapoti all vormindab PowerShell mis tahes Pipeline'i esemeid, mis on ServiceControlleri tüüpi ja loovad tabeli kolme veeruga: Olek, Nimi ja DisplayName. Aga mis siis, kui sellel tüübil, millega te tegelete, ei ole sellesse faili kirjet või mis tahes muud vormingus faili selles küsimuses? Noh, see on tegelikult üsna lihtne. Kui torujuhtmest väljuval objektil on 5 või enam omadust, kuvab PowerShell loendis kõik objekti omadused; kui sellel on vähem kui 5 omadust, kuvatakse need tabelis.
Andmete vormindamine
Kui te ei ole rahul objekti või tüübi vaikevorminguga, saate oma vorminduse rullida. Selleks on vaja kolme cmdletit.
- Vorming-loend
- Vorming-tabel
- Formaat-lai
Formaat-lai lihtsalt võtab objektide kogumi ja kuvab iga objekti ühe vara. Vaikimisi otsib see nime vara; kui teie objektid ei sisalda nime omadust, kasutab see objekti esimest omadust, kui omadused on järjestatud tähestikulises järjekorras.
Get-Service Formaat-lai
Nagu näete, on see ka vaikimisi kaks veergu, kuigi saate määrata, millist omadust soovite kasutada, ning mitu veergu, mida soovite kuvada.
Get-Service Formaat-lai - kinnisvara kuvamise nimi - veerg 6
Kui midagi on vormindatud tabeli järgi vaikimisi, saate selle alati kuvada nimekirjavaate cmdleti abil. Vaatame Get-Process cmdleti väljundit.
See tabelivaade sobib väga hästi sellisele teabele, kuid teeme, et tahame seda vaadata nimekirja vormis. Kõik, mida me tegelikult peame tegema, on see selle asemel Vorming-loend.
Get-protsess Vorming-loend
Nagu näete, kuvatakse vaikimisi ainult neli elementi. Objekti kõigi omaduste vaatamiseks saate kasutada metamärki.
Get-protsess Vorming-loend - vara *
Teise võimalusena saate valida ainult soovitud omadused.
Get-protsess Format-List -Kinnisvara nimi, ID
Vorming-tabel, teisest küljest võtab see andmed ja muudab selle tabelisse. Kuna meie andmed Get-Processist on juba tabeli vormis, saame seda kasutada, et kergesti valida tabelis näidatud omadused. Ma kasutasin parameetrit AutoSize, et kõik andmed sobiksid ühele ekraanile.
Get-protsess Formaat-tabeli nimi, id -AutoSize
Filtreerimine ja võrdlemine
Üks parimaid asju objektipõhise torujuhtme kasutamisel on see, et objekte saab torujuhtmest välja filtreerida igal etapil, kasutades cmdleti.
Get-Service Kus-objekt $ _. Olek -eq “Running”
Kasutades, kus objekt on tegelikult väga lihtne. $ _ esindab praegust torujuhtme objekti, millest saate valida omaduse, mida soovite filtreerida. Siin olid ainult objektid, kus olekuomand võrdub jooksmisega. Filtreerimisskripti plokis saab kasutada mõningaid võrdlusoperaatoreid:
- eq (võrdne)
- neq (mitte võrdne)
- gt (suurem kui)
- ge (suurem või võrdne)
- lt (vähem kui)
- le (vähem või võrdne)
- sarnane (metamärkide vastavus)
Täielikku nimekirja ja lisateavet saab vaadata käsiraamatus about_comparison, kuid seal on kaua aega, et harjuda kui-Obejecti süntaksit. See on kõik selleks ajaks!