Domača » kako » Geek Šola učenje oblikovanje, filtriranje in primerjavo v PowerShell

    Geek Šola učenje oblikovanje, filtriranje in primerjavo v PowerShell

    V tej izdaji šole Geek pogledamo oblikovanje, filtriranje in primerjavo objektov v cevovodu.

    Preberite prejšnje članke v seriji:

    • Naučite se avtomatizirati Windows s PowerShell
    • Učenje uporabe ukaznih vrstic v PowerShell
    • Učenje uporabe objektov v programu PowerShell

    In ostanite z nami do konca tedna.

    Privzeto oblikovanje

    Ko sem prvič začel z PowerShell, sem mislil, da je vse čarobno, toda resnica je, da potrebujem le malo časa, da razumem, kaj se dogaja pod pokrovom. Enako velja za sistem oblikovanja PowerShell. Pravzaprav, če zaženete ukaz »cmdlet« Get-Service, ustvarjeni izhod prikaže samo 3 lastnosti: Stanje, Ime in Ime prikaza.

    Toda, če boste Get-Service dobili Get-Member, boste videli, da imajo objekti ServiceController veliko več kot le te tri lastnosti, torej kaj se dogaja?

    Odgovor je v skriti datoteki, ki določa, kako večina vgrajenih ukaznih vrstic prikaže svoj izhod. Če želite razumeti, vnesite naslednje v ukazno lupino in pritisnite Enter.

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

    Če uporabljamo funkcijo Find notepad, lahko hitro preskočimo na razdelek, ki podrobno opisuje izhod cmdleta Get-Service z iskanjem tipa ServiceController.

    Nenadoma lahko vidite, da se pod pokrovom PowerShell formatira vse objekte v cevovodu, ki so tipa ServiceControllerja in ustvarijo tabelo s tremi stolpci: Status, Ime in DisplayName. Kaj pa, če tip, s katerim se ukvarjate, nima vnosa v to datoteko ali kakšno drugo obliko datoteke za to zadevo? No, potem je zelo preprosto. Če ima objekt, ki prihaja iz cevovoda, 5 ali več lastnosti, PowerShell prikaže vse lastnosti predmeta na seznamu; če ima manj kot 5 lastnosti, jih prikaže v tabeli.

    Oblikovanje podatkov

    Če niste zadovoljni s privzetim oblikovanjem predmeta ali tipa, lahko zvišate svoje oblikovanje. Za to potrebujete tri ukazne vrstice.

    • Seznam formatov
    • Oblika-tabela
    • Format-Wide

    Format-Wide preprosto vzame zbirko predmetov in prikaže posamezno lastnost vsakega objekta. Privzeto bo iskal lastnost imena; če vaši objekti ne vsebujejo lastnosti, bo uporabilo prvo lastnost objekta, ko bodo lastnosti razvrščene po abecedi.

    Get-Service | Format-Wide

    Kot lahko vidite, je privzeta tudi dva stolpca, čeprav lahko določite, katera lastnost želite uporabiti, in koliko stolpcev želite prikazati.

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

    Če je nekaj privzeto formatirano kot tabela, ga lahko vedno preklopite v pogled seznama s cmdletom Format-List. Oglejmo si izhodne podatke cmdleta Get-Process.

    Ta tabelarični pogled zelo dobro ustreza takšnim informacijam, toda pretvarjamo se, da si ga želimo ogledati v obliki seznama. Vse, kar moramo storiti, je, da ga odnesemo Seznam formatov.

    Get-Process | Seznam formatov

    Kot lahko vidite, so na seznamu privzeto prikazani samo štirje elementi. Če si želite ogledati vse lastnosti predmeta, lahko uporabite nadomestni znak.

    Get-Process | Seznam-Oblika-Lastnost *

    Lahko pa izberete samo želene lastnosti.

    Get-Process | Oblika seznama - ime lastnine, id

    Oblika-tabela, po drugi strani pa vzame podatke in jih spremeni v tabelo. Ker so naši podatki iz programa Get-Process že v obliki tabele, ga lahko uporabimo za preprosto izbiro lastnosti, ki jih želimo prikazati v tabeli. S parametrom AutoSize sem nastavil vse podatke na en sam zaslon.

    Get-Process | Ime oblike-tabele, id -AutoSize

    Filtriranje in primerjava

    Ena od najboljših stvari pri uporabi objektnega cevovoda je, da lahko filtrirate objekte iz cevovoda v kateri koli fazi s cmdletom Kje-Objekt.

    Get-Service | Kje-predmet $ _. Stanje -eq "Running"

    Uporaba, kjer je objekt dejansko zelo preprost. $ _ predstavlja trenutni objekt cevovoda, iz katerega lahko izberete lastnost, na kateri želite filtrirati. Tu so bili samo tisti objekti, kjer je lastnost statusa enaka Running. V bloku za filtriranje skripta lahko uporabite nekaj primerjalnih operaterjev:

    • eq (enako do)
    • neq (ni enako kot)
    • gt (Več kot)
    • ge (več ali enako)
    • lt (manj kot)
    • le (manj kot enako do)
    • všeč (ujemanje nizov znakov)

    Celoten seznam in več informacij si lahko ogledate v konceptualni datoteki za pomoč about_comparison, vendar traja nekaj časa, da se navadite na sintakso Where-Obeject. To je vse za ta čas!