Hjemmeside » hvordan » Geek School Lær å bruke Cmdlets i PowerShell

    Geek School Lær å bruke Cmdlets i PowerShell

    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 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 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 å arbeide 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 i 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 inneholdt mange kommandoer du kanskje hadde brukt i ledeteksten, samt 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 kommer til å lese vår kode. For å se hvilken kommando et alias kjører under hetten, kan du bruke følgende:

    Hent-alias-navn ls

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

    Get-ChildItem-Definisjon Get-ChildItem

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

    Nytt alias-navn icanhazfilez -Value Get-ChildItem

    Åpenbart må du erstatte "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 dette 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 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 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.