10Aug

Geek School: Lære å bruke Cmdlets i PowerShell

click fraud protection

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.

Husk å 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 et Verb-Noun syntaks som kan sees 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 bidrar virkelig til å gjette cmdlet-navn. For eksempel, anta at du vil en liste over -tjenester og deres status - det er riktig, det er så enkelt som Get-Service. Hvordan tror du at vi ville en liste over kjører prosesser - det er riktig, Get-Process vil gjøre trikset.

instagram viewer

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 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, da det er her 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.

Aliases

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. For eksempel, i PowerShell kan vi få en katalogoppføring ved å bruke:

Get-ChildItem

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

Har 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 koden vår. For å se hvilken kommando et alias kjører under hetten, kan du bruke følgende:

Get-Alias-Navn ls

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

Get-ChildItem-Definisjon Get-ChildItem

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

New-Alias ​​-Name icanhazfilez -Value Get-ChildItem

Åpenbart, Du må bytte ut "icanhazfilez" med navnet på ditt nye alias og Get-ChildItem med cmdleten 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.

avkortede parametere

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

Get-Service-Navnet 'Apple Mobile Device' -ComputerName localhost

er det samme som:

Get-Service -Na 'Apple Mobile Device' - på localhost

Hvis du ved en tilfeldighet gjør parametrene navn for tvetydige duvil få en feil.

Legacy Commands

Til slutt vil 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 å skrive ut en lang tekststreng, er vi nå igjen med et objekt, som vi vil se på i morgendagens utgave av Geek School.