Geek-oppimisen muotoilu, suodatus ja vertailu PowerShellissa
Tässä Geek-koulun painoksessa tarkastelemme putkilinjan esineiden muotoilua, suodatusta ja vertailua.
Muista lukea sarjan aiemmat artikkelit:
- Opi automatisoimaan Windows PowerShellillä
- Oppiminen käyttämään Cmdlet-tiedostoja PowerShellissä
- Opi käyttämään esineitä PowerShellissä
Ja pysy kuulolla koko sarjan koko viikon ajan.
Oletusmuotoilu
Kun aloitin ensimmäisen kerran PowerShellin kanssa, ajattelin, että kaikki oli taika, mutta totuus on, että vain kestää vähän aikaa ymmärtää, mitä hupun alla tapahtuu. Sama pätee PowerShellin muotoilujärjestelmään. Itse asiassa, jos suoritat Get-Service-cmdlet-sovelluksen, tuotettu tuotos näyttää vain 3 ominaisuutta: Tila, Nimi ja DisplayName.
Mutta jos hankit Get-Service-palvelun Get-Memberiin, huomaat, että ServiceController-objekteissa on paljon enemmän kuin vain nämä kolme ominaisuutta, joten mitä tapahtuu?
Vastaus on piilotetussa tiedostossa, jossa määritellään, kuinka useimmat sisäänrakennetut cmdlet-ohjelmat näyttävät tuotoksensa. Saadaksesi ymmärryksen, kirjoita seuraava kuori ja paina Enter.
notepad C: Windows System32 WindowsPowerShell1.0 DotNetTypes.format.ps1xml
Jos käytämme Notepadin Find-toimintoa, voimme nopeasti siirtyä osioon, jossa kuvataan Get-Service-cmdlet-lähdön lähdettä etsimällä ServiceController-tyyppiä.
Yhtäkkiä voit nähdä, että hupun alla PowerShell muotoilee kaikki putkilinjan esineet, jotka ovat ServiceController-tyyppisiä ja luovat taulukon, jossa on kolme saraketta: Status, Name ja DisplayName. Mutta entä jos tyyppi, jota käsittelet, ei ole merkintää kyseisessä tiedostossa, tai mikä tahansa muu tiedostotiedosto? No niin, se on todella yksinkertaista. Jos putkilinjasta poistuvalla objektilla on 5 tai useampia ominaisuuksia, PowerShell näyttää kaikki objektin ominaisuudet luettelossa; jos siinä on vähemmän kuin 5 ominaisuutta, se näyttää ne taulukossa.
Tietojen alustaminen
Jos et ole tyytyväinen objektin tai tyypin oletusmuotoiluun, voit rullata oman muotoilun. Sinulla on kolme cmdletiä, jotka sinun tarvitsee tietää.
- Format-List
- Muoto-Taulukko
- Format-Wide
Format-Wide yksinkertaisesti ottaa kokoelman esineitä ja näyttää yksittäisen ominaisuuden jokaisesta kohteesta. Oletuksena se etsii nimen ominaisuutta; jos esineissäsi ei ole nimen ominaisuutta, se käyttää objektin ensimmäistä ominaisuutta, kun ominaisuudet on lajiteltu aakkosjärjestyksessä.
Hae palvelu Format-Wide
Kuten näette, se on myös oletusarvoisesti kahdessa sarakkeessa, vaikka voit määrittää sekä sen, mitä ominaisuutta haluat käyttää, että kuinka monta saraketta haluat näkyvän.
Hae palvelu Formaatti-laaja-ominaisuus DisplayName-sarake 6
Jos jokin on oletusarvoisesti alustettu taulukkona, voit aina vaihtaa sen luettelonäkymään käyttämällä Format-List cmdlet -toimintoa. Tarkastellaan Get-Process-cmdlet-ohjelman tuotosta.
Tämä taulukkonäkymä sopii todella hyvin tällaiseen tietoon, mutta teeskennellään, että haluamme nähdä sen luettelomuodossa. Kaikki mitä meidän on todella tehtävä, on sen siirtäminen Format-List.
Get-Process | Format-List
Kuten näet, luettelossa näkyy oletuksena vain neljä kohdetta. Jos haluat tarkastella kaikkia kohteen ominaisuuksia, voit käyttää hahmomerkkiä.
Get-Process | Format-List -Property *
Vaihtoehtoisesti voit valita vain haluamasi ominaisuudet.
Get-Process | Format-List -Kiinteistön nimi, tunnus
Muoto-Taulukko, toisaalta ottaa tiedot ja kääntää sen taulukoksi. Koska Get-Process-tietomme ovat jo taulukon muodossa, voimme käyttää sitä helposti valitsemalla taulukossa näkyviä ominaisuuksia. Käytin AutoSize-parametria, jotta kaikki tiedot mahtuivat yhteen näyttöön.
Get-Process | Muotoile taulukon nimi, id -AutoSize
Suodatus ja vertailu
Yksi parhaista asioista objektiivipohjaisen putkilinjan käyttämisessä on, että voit suodattaa esineet putkilinjasta missä tahansa vaiheessa, kun käytät-objektin cmdletiä.
Hae palvelu Missä-Objekti $ _. Tila-eq “Juoksu”
Käyttämällä missä objekti on todella yksinkertainen. $ _ edustaa nykyistä putkilinjaobjektia, josta voit valita ominaisuuden, jonka haluat suodattaa. Täällä oltiin vain pitämässä kohteita, joissa Status-ominaisuus vastaa Juoksu-ominaisuutta. On olemassa muutamia vertailuoperaattoreita, joita voit käyttää suodatusskriptilohkossa:
- eq (yhtä suuri)
- neq (ei yht.)
- gt (suurempi kuin)
- ge (suurempi tai yhtä suuri)
- lt (vähemmän kuin)
- le (vähemmän tai yhtä suuri)
- kuten (Wildcard String Match)
Täydellinen luettelo ja lisätietoja voidaan tarkastella about_comparison-käsitteellisessä ohjetiedostossa, mutta se vie jonkin aikaa tottua Missä-Obeject-syntaksiin. Tämä on kaikki tällä kertaa!