Tässä Geek School -versiossa tarkastelemme Pipelineen esineiden muotoilua, suodattamista ja vertaamista.
Muista lukea sarjan aiemmat artikkelit:
Ja pysy kuulolla koko sarjan koko viikon ajan.
Kun aloin ensin PowerShellin kanssa, ajattelin, että kaikki on taikaa, mutta totuus on vain vähän aikaa ymmärtää, mitä tapahtuu huuvan alla. Sama koskee PowerShell-muotoilujärjestelmää. Itse asiassa, jos suoritat Get-Service-cmdletin, tuotettu tuotos näyttää vain kolme ominaisuutta: Tila, Nimi ja DisplayName.
Mutta jos saat Get-Service-palvelun Get-Memberille, näet, että ServiceController-objekti on paljon enemmän kuin vain nämä kolme ominaisuutta, joten mitä tapahtuu?
Vastaus on piilotetussa tiedostossa, joka määrittää, kuinka useimmat sisäänrakennetusta cmdletistä näyttävät tuotoksensa. Jotta ymmärtäisit, kirjoita seuraava kuori ja paina enter.
muistilehtiö C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml
Jos käytämme notepadin Etsi-toimintoa, voimme siirtyä nopeasti osioon, joka kertoo Get-Service-cmdlet-tuotoksen etsimällä ServiceController-tyypin.
Yhtäkkiä näet, että konepellin alla PowerShell muotoilee kaikki ServiceController-tyyppiset Pipeline-objektit ja luo taulukon, jossa on kolme saraketta: tila, nimi ja DisplayName. Mutta entä jos tyyppi, jolla sinulla on tekemistä, ei ole merkintää kyseisessä tiedostossa tai missä tahansa muussa tiedostomuodossa? No niin, se on varsin yksinkertainen. Jos putkesta tulevasta kohteesta on 5 tai useampia ominaisuuksia, PowerShell näyttää kaikki objektin ominaisuudet luettelossa; jos sillä on alle 5 ominaisuutta, se näkyy taulukossa.
Jos et ole tyytyväinen objektin tai tyypin oletusmuotoiluun, voit rullata oman muotoilun. Sinun on tiedettävä kolme cmdletkiä.
Format-Wide yksinkertaisesti kerää kokoelma esineitä ja näyttää kunkin objektin yhden ominaisuuden. Oletusarvoisesti se etsii nimen ominaisuutta; jos esineissäsi ei ole nimiominaisuutta, se käyttää objektin ensimmäistä ominaisuutta, kun ominaisuudet on lajiteltu aakkosjärjestykseen.
Get-Service | Format-Wide
Kuten näet, sen oletusasetus on myös kahdella sarakkeella, vaikka voit määrittää sekä haluamasi ominaisuuden ja kuinka monta saraketta haluat näyttää.
Get-Service | Format-Wide-Ominaisuus NäyttöNimi -Kolmius 6
Jos jotain on alustettu taulukkoon oletuksena, voit aina vaihtaa sen luettelonäkymään käyttämällä muotoilu-luettelo-cmdletä. Katsotaanpa Get-Process-cmdletin tuotos.
Tämä taulukkolaskenta tosiasiassa sopii hyvin tällaiseen tietoon, mutta anna teeskennellä, että haluamme tarkastella sitä luettelomuodossa. Meidän täytyy vain tehdä se Format-List.
Get-Process | Format-List
Kuten näet, vain neljä kohdetta näytetään oletusarvoisesti luettelossa. Voit tarkastella objektin kaikkia ominaisuuksia käyttämällä jokerimerkkiä.
Get-Process | Muotoilu-lista -periaate *
Vaihtoehtoisesti voit valita vain haluamasi ominaisuudet.
Get-Process | Muotoiluluettelo -Käyttäjän nimi, tunnus
Muoto-Taulukko, toisaalta ottaa tiedot ja muuttaa sen taulukkoon. Koska Get-Processin tiedot ovat jo taulukon muodossa, voimme käyttää sitä helposti valitsemaan ne kohteet, jotka haluamme näyttää taulukossa. Käytin AutoSize-parametria, jotta kaikki tiedot sopisivat yhteen näyttöön.
Get-Process | Muoto-taulukon nimi, id -AutoSize
Yksi parhaista tavoista käyttää objektipohjaista putkistoa on se, että voit suodattaa esineitä putkesta missä tahansa vaiheessa Where-Object-cmdletin avulla.
Get-Service | Missä-Objekti $ _. Tila -eq "Running"
Käytä missä kohde on todella yksinkertainen. $ _ edustaa nykyistä putkiobjektia, josta voit valita ominaisuuden, jonka haluat suodattaa. Tässä vain pitävät esineitä, joissa Tila-ominaisuus on Running. Muutamia vertailuoperaattoreita, joita voit käyttää suodatuskäsikirjoituslohkossa:
Täydellinen luettelo ja lisätietoja löytyvät noin_comparison-käsitteellisestä ohjetiedostosta, mutta jos-Obeject-syntaksia käytetään jonkin aikaa. Se on kaikki tällä kertaa!