Viktige punkter
- PowerShell er et skriptspråk som gir mulighet for automatisering av datamaskinoppgaver.
- Cmdlets er enkle kommandoer i PowerShell med spesifikke funksjoner. En oversikt over tilgjengelige kommandoer kan hentes ved å bruke «Get-Command».
- PowerShell er kompatibel med Windows, macOS og Linux.
PowerShell representerer et skriptspråk som tilbyr en brukervennlig og effektiv metode for å automatisere datamaskinoppgaver. Lær hvordan du kan utnytte dette verktøyet til å utvikle skript for din Windows-baserte PC.
Oversikt over PowerShell-skripting
For å komme i gang med å skape enkle PowerShell-skript på Windows, er det tre hovedelementer du bør ha kjennskap til:
- Cmdlets: Dette er kommandoer med en enkel og spesifikk funksjon.
- Parametere: Disse brukes til å angi detaljer som hva, når, hvor og hvordan cmdlets/kommandoer skal utføres.
- Pipeline: Dette er en mekanisme som kobler utdataene fra en cmdlet og dens parametere til andre cmdlets og funksjoner.
Ved å kombinere disse elementene kan du utvikle enkle skript for å automatisere rutineoppgaver.
Et eksempel på en pipeline viser hvordan du kan bruke flere cmdlets sammen for å oppnå en ønsket handling:
For å utføre denne pipelinen i PowerShell, vil du bruke en kommando som ligner på denne:
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl
Detaljert om cmdlets
Som et skriptspråk har PowerShell innebygde kommandoer for å manipulere objekter og utføre diverse handlinger. Disse grunnleggende kommandoene kalles cmdlets.
Cmdlets, uttalt som «command-lets», er små, spesialiserte kommandoer som anvendes i PowerShell-miljøet og har filtypen .dll. Disse kodeenhetene er mer effektive enn funksjoner på grunn av deres kompilerte natur.
Det finnes tusenvis av cmdlets i PowerShell, og det er ikke nødvendig å lære alle. Du kan begynne med å lære de mest grunnleggende, og gradvis utvide kunnskapen etter hvert som du får mer erfaring. For å se en liste over cmdlets som er installert på maskinen din, kan du utføre denne kommandoen:
Get-Command
Du vil se at kommandoene følger en navngivningskonvensjon med verb-substantiv, som gjør det enklere å forstå hva hver enkelt cmdlet gjør.
For eksempel, `Get-Command` gir deg en oversikt over alle kommandoer som er tilgjengelige i PowerShell, `Get-Process` viser deg hvilke prosesser som kjører, og `Copy-Item` kopierer filer til en annen mappe.
Cmdlets har også omfattende dokumentasjon som inneholder eksempler, bruksanvisninger og forklaringer på hvordan de fungerer.
For å lære mer om en spesifikk cmdlet og hvordan du bruker den, kan du bruke denne kommandoen:
Get-Help <navn-på-cmdlet>
Forklaring av PowerShell-parametre
Cmdlets kan bruke parametere for å tilpasse utførelsen. Ved å angi parameterverdier kan du styre hva, når, hvor og hvordan hver PowerShell-kommando utføres.
For eksempel vil `Get-Process` hente og vise en liste over alle aktive prosesser i operativsystemet ditt:
Men hva om du bare ønsker å se en bestemt prosess? Du kan bruke parametere til dette. For eksempel, for å hente alle Slack-prosesser, kan du bruke `Name`-parameteren sammen med `Get-Process` cmdleten:
Get-Process -Name Slack
Da vil du kun se prosessene som heter «slack»:
Noen parametere er posisjonelle, som betyr at navnet deres er valgfritt. I dette eksemplet vil `Get-Process -Name Slack` og `Get-Process Slack` oppnå samme resultat.
Hver cmdlet aksepterer ulike typer parametere. Du kan bruke `Get-Help`-kommandoen for å se de aksepterte parameterne for en cmdlet i `SYNTAX`-delen.
Get-Help Get-Process
Dette vil gi deg en liste over alle de mulige måtene du kan kjøre cmdleten på:
I dette tilfellet godtar `Get-Process` parametere som `Name`, `Id`, `ComputerName`, `Module`, `FileVersionInfo` og andre vanlige parametere. Symbolene her har følgende betydning:
Symbol |
Navn |
Betydning |
---|---|---|
Blank |
Parameteren aksepterer ikke inndata |
|
– |
Bindestrek |
Indikerer parameternavn |
<> |
Vinkelbraketter |
Plassholder for tekst |
[] |
Braketter |
Parameter som kan akseptere en eller flere verdier |
{} |
Klammeparentes |
Parameteren aksepterer et sett med verdier |
Parametere som krever inndata vil indikere datatypen de trenger, som for eksempel en streng, et heltall, en boolsk verdi eller en DateTime. For eksempel:
Get-Process [[-Name] <string[]>]
Dette betyr at `Name`-parameteren godtar en eller flere strengverdier, mens dette:
Get-Process -Id <int[]>
Betyr at `Id`-parameteren godtar en eller flere heltallsverdier.
Det tidligere `Get-Process`-eksemplet brukte `Name`-parameteren for å begrense resultatene. Men hvis du ønsker å begrense det til en enda mer spesifikk prosess, kan du bruke `ID`-parameteren, som krever et heltall, som vist i syntaksen.
Get-Process -Id 3016
Dette vil vise deg kun én prosess i listen:
Opprette en pipeline
I PowerShell behandles alle data som objekter. For å skape et skript flyter disse objektene gjennom en rekke cmdlets eller funksjoner, koblet sammen med et rørsymbol ( | ). Det er viktig å velge de riktige cmdlets og koble dem sammen i en logisk rekkefølge for å skrive effektive skript.
Anta at du skal utvikle et skript som sorterer og viser de fem filene som tar opp mest plass i en mappe. Det finnes mer avanserte måter å lage et filsorteringsskript på, men følgende enlinje er lett å forstå:
For å utføre dette i PowerShell, kan du bruke en pipeline som ser omtrent slik ut:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Lagre pipeline som et PS1-skript
Nå som du har en velfungerende pipeline, kan du lagre den som en PS1-skriptfil, slik at du slipper å skrive den inn på nytt hver gang du skal bruke den.
Den enkleste måten å lage en PS1-fil på er ved å lime skriptet inn i Notisblokk og lagre filen med filtypen .ps1.
Etter at du har opprettet PS1-filen, kan du kjøre den i PowerShell ved å bruke kommandoen `./ScriptName.ps1`:
Gratulerer! Du har nå kunnskapen som trengs for å skrive PowerShell PS1-skript.
PowerShell er også tilgjengelig for Linux og macOS
PowerShell er anerkjent som et av de mest brukervennlige skriptspråkene for nybegynnere. Selv om PowerShell tidligere var begrenset til Windows, er den oppdaterte versjonen nå tilgjengelig for macOS og en rekke Linux-distribusjoner. Dette gjør PowerShell enda mer attraktivt, siden du nå kan bruke kunnskapene dine fra Windows på andre operativsystemer.