19Aug

Geek-koulu: oppimisen muotoilu, suodatus ja vertailu PowerShellissä

Tässä Geek School -versiossa tarkastelemme Pipelineen esineiden muotoilua, suodatusta ja vertaamista.

Lue lisää aiempien artikkeleiden sarjassa:

  • Opi käyttämään Windowsia PowerShellin avulla
  • Oppimista Cmdlet-sovellusten käyttämiseen PowerShellissä
  • Oppiminen PowerShell-objektin käyttämisessä

Ja pysy kuulolla koko sarjan koko viikon ajan.

Oletusmuotoilu

Kun aloin ensin PowerShellin kanssa, ajattelin kaiken olevan taikuutta, 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 syötät Get-Servicein 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.

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

Jos käytämme notepadin Etsi-toimintoa, voimme siirtyä nopeasti osioon, joka kertoo Get-Service-cmdletin lähdön etsimällä ServiceControllertyyppi.

Yhtäkkiä näet, että konepellin alla PowerShell muotoilee kaikki ServiceController-tyyppisen putkilinjan objektit ja luo taulukon, jossa on kolme saraketta: tila, nimi ja näyttönimi. 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.

Tietojen alustaminen

Jos et ole tyytyväinen objektin tai tyypin oletusmuotoiluun, voit rullata oman muotoilun. Sinun on tiedettävä kolme cmdletkiä.

  • -muotoiluluettelo
  • -muoto-taulukko
  • -formaatti

-formaatti yksinkertaisesti kerää joukon objekteja 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, se myös määrittää oletusarvon kahdelle sarakkeelle, vaikka voit määrittää sekä haluamasi ominaisuuden ja kuinka monta saraketta haluat näyttää.

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

Jos jotain on alustettu taulukon oletusarvoisesti, voit aina vaihtaa sen luettelonäkymään käyttämällä Format-List-cmdletä.Katsotaanpa Get-Process-cmdletin tuotos.

Tämä taulukkoluku tosiasiallisesti sopii hyvin tällaiseen tietoon, mutta anna teeskennellä, että haluamme tarkastella sitä luettelomuodossa. Kaikki, mitä tarvitsemme todella, on putkea se -muotoiluluetteloon .

Get-Process |Muotoilu-luettelo

Kuten näet, luettelossa on vain neljä kohdetta oletuksena. Voit tarkastella objektin kaikkia ominaisuuksia käyttämällä jokerimerkkiä.

Get-Process |Format-List -Property *

Vaihtoehtoisesti voit valita vain haluamasi ominaisuudet.

Get-Process |Muotoiluluettelo -Käyttäjän nimi, id

Format-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 |Format-taulukon nimi, id -AutoSize

Suodattaminen ja vertailu

Yksi objektipohjaisen putkilinjan käyttämisestä on se, että voit suodattaa esineitä putkesta missä tahansa vaiheessa Where-Object-cmdletin avulla.

Get-Service |Missä-Objekti{ $ _. Tila -eq "Käynnissä"}

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:

  • eq( yhtäläinen)
  • neq( ei yhtäläinen)
  • gt( suurempi kuin)
  • ge( suurempi kuin tai vastaava)
  • lt( pienempi kuin)
  • le( Vähemmän tai samanlaista)
  • like( Wildcard String Match)

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!