Skip to main content

Geek School: Lære å bruke Cmdlets i PowerShell

Geek School: Lære å bruke Cmdlets i PowerShell

Geoffrey Carr

Hvis du har brukt ipconfig eller ping gjennom kommandoprompten, er du halvveis til å bli en PowerShell ninja. Så kom og bli med oss ​​da vi oppdager cmdlets i denne installasjonen av Geek School.

Pass på å sjekke ut vår første artikkel som introduserer PowerShell, og hold deg innstilt for resten av serien hele uken.

Anatomien til en Cmdlet

I den første delen av serien så vi en cmdlet som så ut slik:

Update-Help

PowerShell cmdlets har en Verb-Noun syntaks, som kan ses over. Det viktige å merke seg er at substantivet alltid er entall, selv om cmdletet kan returnere mer enn ett resultat. For å se en liste over juridiske verb i PowerShell kan du bruke Get-Verb cmdlet.

Å vite de juridiske verbene og huske singular substantivregelen hjelper virkelig å gjette cmdlet-navn. For eksempel, antar du vil en liste med tjenester og deres status - det er riktig, det er så enkelt som Get-Service. Hvordan tror du vi ville en liste over kjører prosesser - Det er riktig, Get-Process vil gjøre trikset.

Get-Process

Dette gjør det veldig enkelt å jobbe med hvilken som helst teknologi. Hvis du for eksempel hadde lastet inn cmdlets for Exchange, kunne vi enkelt få en liste over postkasser på serveren ved å bruke:

Get-Mailbox

Det er imidlertid et unntak. Bytt til side, vil alle andre teknikkspesifikke kommandoer kreve et prefiks. For eksempel, hvis vi ønsket å få brukerne som for øyeblikket er logget på via Eksternt skrivebord, skriver vi:

Get-RDUserSession

Som kan ses på skjermbildet nedenfor.

Merk: Dette skjermbildet ble tatt på en Server 2012-boks som det er der du skal finne de fleste av de teknikkspesifikke modulene.

For en stund siden leste jeg en artikkel av Don Jones, Godfather of PowerShell, der han forklarte at Exchange sendt før dette prefikset ble lagt til cmdlets, så det implementerte dem aldri og vil aldri.

aliaser

En annen funksjon som PowerShell kommer med, er muligheten til å ha flere måter å kjøre de samme kommandoaliasene, hvis du vil. Den fantastiske tingen om dem er at de inkluderte mange kommandoer du kanskje hadde brukt i kommandoprompten, så vel som noen Linux-aliaser. I PowerShell kan vi for eksempel få en katalogoppføring ved å bruke:

Get-ChildItem

Brukes til å bruke kommandoprompten? Ikke bekymre deg, de har dekket deg.

Har du en Linux-bakgrunn? De har du dekket der også.

Når du har skriptet i et par år, har du en tendens til å bli lat og begynner å bruke aliaser mye, men dette hjelper ikke nykommere som skal lese vår kode. For å se hvilken kommando et alias kjører under hetten, kan du bruke følgende:

Get-Alias –Name ls

På den annen side, hvis du føler at det er på tide å styre spillet ditt, kan du bruke definisjonsparameteren til å få alle alias for en cmdlet:

Get-ChildItem –Definition Get-ChildItem

Hvis du kommer fra en annen bakgrunn, kan du legge til dine egne aliaser ved å gjøre følgende:

New-Alias –Name icanhazfilez –Value Get-ChildItem

Selvfølgelig må du erstatte "icanhazfilez" med navnet på ditt nye alias og Get-ChildItem med cmdletet du vil at den skal løpe under hetten.

En ting å merke seg er at du mister alle aliasene du har definert når du lukker skallet. Du kan komme seg rundt ved å legge til definisjonen i profilskriptet ditt.

Trunkering Parametre

Windows PowerShell lar deg også avkorte parameternavn til det punktet de blir tvetydige, det vil si til det punktet der PowerShell ikke lenger kan finne ut hvilken parameter du snakker om. For eksempel:

Get-Service -Name ‘Apple Mobile Device’ -ComputerName localhost

Er det samme som:

Get-Service -Na ‘Apple Mobile Device’ -Com localhost

Hvis du ved en tilfeldighet gjør parametrene navnene for tvetydige, vil du få en feil.

Legacy Commands

Til slutt vil de kommandoene du kjenner og elsker, fortsatt fungere i PowerShell.

ping www.google.com

Bare husk at eldre programmer som ping utfører en streng, og det er ofte en bedre måte å gjøre det samme ved hjelp av en PowerShell-cmdlet.

I stedet for å legge ut en lang tekststreng, er vi nå igjen med et objekt, som vi vil se på i morgendagens utgave av Geek School.

Link
Plus
Send
Send
Pin