Geek School: Learning Formatering, filtrering og sammenligning i PowerShell

Innholdsfortegnelse:

Geek School: Learning Formatering, filtrering og sammenligning i PowerShell
Geek School: Learning Formatering, filtrering og sammenligning i PowerShell

Video: Geek School: Learning Formatering, filtrering og sammenligning i PowerShell

Video: Geek School: Learning Formatering, filtrering og sammenligning i PowerShell
Video: OpenSSH for Windows: Install, Configure, Connect, and Troubleshoot - YouTube 2024, April
Anonim
I denne utgaven av Geek School ser vi på formatering, filtrering og sammenligning av objekter i rørledningen.
I denne utgaven av Geek School ser vi på formatering, filtrering og sammenligning av objekter i rørledningen.

Husk å lese de forrige artiklene i serien:

  • Lær hvordan du automatiserer Windows med PowerShell
  • Lære å bruke Cmdlets i PowerShell
  • Lære hvordan du bruker objekter i PowerShell

Og hold deg innstilt for resten av serien hele uken.

Standardformatering

Da jeg først startet med PowerShell, trodde jeg alt var magisk, men sannheten er at det bare tar litt tid å forstå hva som skjer under hetten. Det samme gjelder for formateringssystemet PowerShell. Faktisk, hvis du kjører Get-Service-cmdlet, viser produksjonen bare bare 3 egenskaper: Status, Navn og DisplayName.

Men hvis du piper Get-Service til Get-Member, ser du at ServiceController-objektene har mye mer enn bare disse tre egenskapene, så hva skjer?
Men hvis du piper Get-Service til Get-Member, ser du at ServiceController-objektene har mye mer enn bare disse tre egenskapene, så hva skjer?
Svaret ligger i en skjult fil som definerer hvordan de fleste av de innebygde cmdletene viser utdataene sine. For å få en forståelse, skriv inn følgende i skallet og trykk enter.
Svaret ligger i en skjult fil som definerer hvordan de fleste av de innebygde cmdletene viser utdataene sine. For å få en forståelse, skriv inn følgende i skallet og trykk enter.

notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

Hvis vi bruker notisblokkens finnfunksjon, kan vi raskt hoppe over til avsnittet som beskriver utdataene fra Get-Service cmdlet ved å søke etter ServiceController-typen.

Plutselig kan du se at under hetten PowerShell formaterer objekter i rørledningen som er av typen ServiceController og oppretter en tabell med tre kolonner: Status, Navn og DisplayName. Men hva om typen du har å gjøre med, har ikke en oppføring i den filen eller en annen formatfil for den saks skyld? Vel, det er ganske enkelt faktisk. Hvis objektet som kommer ut av rørledningen har 5 eller flere egenskaper, viser PowerShell alle objektets egenskaper i en liste; hvis den har mindre enn 5 egenskaper, viser den dem i et bord.
Plutselig kan du se at under hetten PowerShell formaterer objekter i rørledningen som er av typen ServiceController og oppretter en tabell med tre kolonner: Status, Navn og DisplayName. Men hva om typen du har å gjøre med, har ikke en oppføring i den filen eller en annen formatfil for den saks skyld? Vel, det er ganske enkelt faktisk. Hvis objektet som kommer ut av rørledningen har 5 eller flere egenskaper, viser PowerShell alle objektets egenskaper i en liste; hvis den har mindre enn 5 egenskaper, viser den dem i et bord.

Formatering av dataene dine

Hvis du ikke er fornøyd med standardformatering av et objekt eller en type, kan du rulle din egen formatering. Det er tre cmdlets du trenger å vite for å gjøre dette.

  • Format-List
  • Format-Table
  • Format-Wide
Image
Image

Format-Wide tar bare en samling objekter og viser en enkelt egenskap for hver gjenstand. Som standard vil det se etter en navnegenskap; Hvis objektene dine ikke inneholder en navnegenskap, vil den bruke objektets første egenskap når egenskapene er sortert alfabetisk.

Get-Service | Format-Wide

Som du kan se, er det også standard to kolonner, selv om du kan angi både hvilken egenskap du vil bruke, samt hvor mange kolonner du vil bli vist.
Som du kan se, er det også standard to kolonner, selv om du kan angi både hvilken egenskap du vil bruke, samt hvor mange kolonner du vil bli vist.

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

Hvis noe er formatert som et bord som standard, kan du alltid bytte det til listevisning ved hjelp av cmdlet Format-liste. La oss se på utgangen av Get-Process cmdlet.
Hvis noe er formatert som et bord som standard, kan du alltid bytte det til listevisning ved hjelp av cmdlet Format-liste. La oss se på utgangen av Get-Process cmdlet.
Image
Image

Denne tabellvisningen passer egentlig godt til denne typen informasjon, men la det virke som om vi vil se det i listeform. Alt vi virkelig trenger å gjøre er å rør det til Format-List.

Get-Process | Format-List

Som du kan se er det bare fire elementer som vises som standard i listen. For å vise alle egenskapene til objektet, kan du bruke et jokertegn.
Som du kan se er det bare fire elementer som vises som standard i listen. For å vise alle egenskapene til objektet, kan du bruke et jokertegn.

Get-Process | Format-List –Property *

Alternativt kan du velge bare de egenskapene du vil ha.
Alternativt kan du velge bare de egenskapene du vil ha.

Get-Process | Format-List –Property name,id

Image
Image

Format-Table, på den annen side tar data og gjør det til et bord. Siden våre data fra Get-Process allerede er i form av et bord, kan vi bruke det til å enkelt velge egenskaper vi vil vise i tabellen. Jeg brukte parameteren AutoSize for å få alle dataene til å passe på en enkelt skjerm.

Get-Process | Format-Table name,id –AutoSize

Image
Image

Filtrering og sammenligning

En av de beste tingene ved å bruke en objektbasert rørledning er at du kan filtrere objekter ut av rørledningen på et hvilket som helst tidspunkt ved hjelp av cmdlet der objektet er.

Get-Service | Where-Object {$_.Status -eq “Running”}

Bruke hvor objektet er faktisk veldig enkelt. $ representerer det nåværende pipelineobjektet, hvorfra du kan velge en egenskap du vil filtrere på. Her er det bare å holde gjenstander der Status-egenskapen er lik Running. Det er noen sammenligningsoperatører du kan bruke i filtreringsskriptblokken:
Bruke hvor objektet er faktisk veldig enkelt. $ representerer det nåværende pipelineobjektet, hvorfra du kan velge en egenskap du vil filtrere på. Her er det bare å holde gjenstander der Status-egenskapen er lik Running. Det er noen sammenligningsoperatører du kan bruke i filtreringsskriptblokken:
  • eq (lik til)
  • neq (ikke lik til)
  • gt (større enn)
  • ge (større enn eller lik til)
  • lt (mindre enn)
  • le (mindre enn eller lik til)
  • som (Wildcard String Match)

En fullstendig liste og mer informasjon kan sees i konjunkturhjelpfilen about_comparison, men det tar litt tid å bli vant til Syntaxen der det er feil. Det er alt for denne gangen!

Anbefalt: