Jeg trodde PowerShell bare var en bedre CMD, og jeg tok feil
Etter å ha sett alle disse flotte artiklene om hvor kraftig Powershell på Windows er, åpnet jeg det for å se hva oppstyret handlet om. Jeg så et kommandoprompt-lignende vindu med en kjent utseende prompt og trodde jeg forstod det. Bare et annet kommandoprompt, ikke sant? Det viser seg (og det er flaut å si det) at jeg like godt kunne kalt romfergen et raskere fly.
PowerShell er ikke en oppgradering av Kommandoprompt (CMD), men et fundamentalt forskjellig verktøy bygget på en annen filosofi. Når du først forstår hva det er, vil du se denne spesifikke kommandolinjeskallet på en helt annen måte.
CMD og PowerShell er egentlig ikke samme type ting
De ser bare like ut, det er alt
Ledetekst har vært en del av Windows-opplevelsen siden MS-DOS-æraen, og den har egentlig ikke endret seg mye siden den gang. Den gjør det den alltid har gjort, tar en kommando, kjører den og skriver ut resultatet på skjermen. Innført i 2006, ser PowerShell lik ut på overflaten, noe som var med vilje. Kommandoer som dir og cls fungerer også i PowerShell, men de er egentlig aliaser, eller snarveier, som kobler til de faktiske PowerShell-kommandoene under. Å skrive dir i PowerShell kjører faktisk Get-ChildItem bak kulissene. Den kjente stilen er en høflighet for folk som migrerer fra Ledetekst, men kan faktisk forvirre folk som meg som er nye til hele kommandolinjen i Windows.
Forskjellen er hva hvert verktøy gir deg tilbake
Den ene spotter ut tekst, den andre gir deg brukbare data
Når du kjører en kommando i CMD, får du tekst. Når du kjører en kommando i PowerShell, får du et objekt, et strukturert datasett med navngitte felt som du deretter kan forespørre. For eksempel, hvis du ber CMD om å liste filene dine, vil det gi deg listen, men du kan ikke gjøre noe programmessig med den, som et metaforisk ark. Hvis du derimot ber PowerShell om å liste filene dine, vil det gi deg den metaforiske ekvivalenten av et regneark: hver fil er en rad, med kolonner for navn, størrelse, endret dato, og mer. De kan umiddelbart filtreres eller sorteres.
Det påvirker en felles funksjon mellom de to appene: pipelinen, |-tegnet du kan bruke for å koble kommandoer sammen. I Command Prompt-appen kan piping bare sende tekst fra én kommando til neste. Det er nyttig, men ikke så kraftig som i PowerShell, hvor pipe-kommandoen sender hele objektet. Den neste kommandoen i kjeden får alle feltene uten å måtte analysere noe.
En kommando som Get-Process | Where-Object {$_.CPU -gt 1} | Sort-Object CPU oversettes til «hent alle kjørende prosesser, behold bare de som bruker mer enn 1 % CPU, og sorter dem deretter etter CPU-bruk. Det er tre trinn der, alle på én linje, uten behov for å analysere tekstutgangen fra hvert trinn. Denne typen PowerShell-skripting kan være veldig kraftfull.»
Hva det faktisk gjør mulig
PowerShell kan spare deg for masse tid
For oss daglige Windows-brukere kommer denne praktiske fordelen i et par områder. Først og fremst gjør det det mye lettere å automatisere batch-omdøping av filer, rydde opp i midlertidige mapper, overvåke diskplass, og oppdatere alle installerte apper med en kommando via winget, alt uten å klikke gjennom GUI-menyene. Det finnes mange vedlikeholdsoppgaver som tar bare noen sekunder å utføre i PowerShell. Du kan også forespørre eget system på måter som Oppgavebehandling ikke lar deg, som å finne nøyaktig hvilken prosess som bruker for mye RAM, liste alt som er satt til å kjøre ved oppstart, eller hente en full inventarliste over installert programvare.
Hvis du også bruker Microsoft-tjenester på jobb, kan PowerShell-automatisering gå enda lenger. Det integreres direkte med Microsoft 365, Azure, Active Directory, Exchange Online og Teams. Dette er oppgaver som CMD rett og slett ikke kan gjøre. I tillegg, fordi skriptene kan gjenbrukes, kan noe du skriver én gang for IT-administrasjonsformål fungere pålitelig på hundrevis av maskiner.
Det er ikke engang et verktøy kun for Windows lenger
Er det tverrplattform?
Overraskende for denne Mac-brukeren viser det seg at Microsoft gjorde PowerShell åpen kildekode og ga det ut i 2016 for macOS og Linux. Versjonen av PowerShell som er bygget inn i Windows 10 og 11 (PowerShell 5.1) er statisk, mottar sikkerhetsoppdateringer, men ingen nye funksjoner. PowerShell 7 kjører på Windows, Mac og Linux, vedlikeholdes på GitHub, og er bygget på .NET Core i stedet for den eldre .NET Framework.
Det lar Mac-brukere i blandede miljøer administrere Azure-ressurser, kjøre de samme automatiseringsskriptene som Windows-kollegaene dine bruker, og skripte tverrplattform-arbeidsflyter uten å måtte skrive om alt per operativsystem. Prøv det med Kommandoprompt (spoiler, det kan du ikke).
Begynn å lære mer
Dir-kommandoen fungerer fortsatt i PowerShell også. Ingenting tvinger deg til å endre hvordan du bruker den på overflaten. Men nå som du vet hva som ligger under, og du vil begynne å utforske, kjør Get-Help inne i PowerShell for en god start for å lære alle de essensielle PowerShell-kommandoene.




