Hva er Windows PowerShell-skripting?

Viktige takeaways

  • PowerShell er et skriptspråk som kan hjelpe med å automatisere datamaskinoppgaver.
  • Cmdlets er Powershell-kommandoer med én funksjon. Du kan se tilgjengelige kommandoer med «Get-Command.»
  • PowerShell er tilgjengelig på Windows, macOS og Linux.

PowerShell er et skriptspråk som kan hjelpe deg med å automatisere datamaskinoppgaver enkelt og pålitelig. Finn ut hvordan du bruker den til å begynne å bygge skript for din Windows-PC.

PowerShell-skriptoversikt

For å begynne å lage enkle PowerShell-skript på Windows, må du vite om tre ting:

  • Cmdlets: enkeltfunksjonskommandoer.
  • Parametere: spesifiser hva, når, hvor og hvordan for Cmdlets/kommandoer.
  • Pipeline: tar utdataene fra Cmdleten og dens parametere og kobler den til andre Cmdlets og funksjoner.

Ved å kombinere alle tre kan du lage enkle skript for å automatisere oppgaver.

Her er et eksempel på en pipeline som viser hvordan du kan kombinere flere Cmdlets for å oppnå en oppgave:

For å kjøre denne rørledningen i PowerShell, vil du bruke noe som denne kommandoen:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl

Cmdlets i detalj

Som ethvert skriptspråk kommer PowerShell forhåndsbygd med kommandoer for å manipulere objekter og utføre ulike oppgaver. Disse grunnleggende kommandoene i PowerShell er kjent som Cmdlets.

Cmdlets (uttales som command-lets) er små enkeltfunksjonskommandoer som brukes i PowerShell-miljøet med .dll-utvidelsen. De er lette kodebiter som utføres raskere enn funksjoner på grunn av deres kompilerte natur.

  Slik installerer du Windows 11 22H2-oppdatering akkurat nå

Det er tusenvis av Cmdlets tilgjengelig på PowerShell. Du trenger ikke å lære dem alle. Du kan begynne med å lære noen få grunnleggende PowerShell Cmdlets og deretter fortsette å lære mens du går gjennom skriptreisen. For å se Cmdletene som allerede er installert på datamaskinen din, kjør:

 Get-Command 

Hvis du ser gjennom resultatene, vil du legge merke til at de følger en navnekonvensjon for verb-substantiv. Dette gjør det lettere å forstå hva en bestemt Cmdlet gjør.

For eksempel gir Get-Command en liste over kommandoer tilgjengelig i PowerShell. Get-Process gir deg prosessene som for øyeblikket er aktive, og Copy-Item kopierer én eller flere filer til en bestemt katalog.

Cmdlets kommer også med omfattende dokumentasjon som inkluderer eksempler, bruksinstruksjoner og forklaringer på funksjonaliteten deres.

For å finne ut mer om en bestemt Cmdlet og hvordan du bruker den, kjør:

 Get-Help <name-of-cmdlet> 

PowerShell-parametere forklart

Cmdlets kan godta parametere for å variere oppførselen deres. Når du kjører en Cmdlet eller funksjon, kan du angi parameterverdier for å spesifisere hva, når, hvor og hvordan hver PowerShell-kommando kjøres.

For eksempel vil Get-Process hente og liste over alle aktive prosesser i operativsystemet ditt:

Men hva om du bare ønsker å få en bestemt prosess? Du kan gjøre det ved å bruke parametere. For å få alle Slack-prosesser kan du for eksempel bruke Name-parameteren med Get-Process Cmdlet:

 Get-Process -Name Slack 

Du vil da bare se de prosessene med navnet «slack»:

  Løs problemer med oppstartsenhet i Windows 10

Noen parametere er «posisjonelle», som betyr at navnet deres er valgfritt. I dette tilfellet gjør Get-Process -Name Slack og Get-Process Slack det samme.

Hver Cmdlet vil godta forskjellige typer parametere. Bruk Get-Help-kommandoen for å vise de aksepterte parameterne for en Cmdlet i SYNTAX-delen.

 Get-Help Get-Process 

Du vil se en liste over alle mulige måter du kan kjøre den gitte Cmdleten på:

I dette tilfellet godtar Get-Process Cmdlet parametere som Name, Id, ComputerName, Module, FileVersionInfo og andre vanlige parametere. Symbolene her betyr:

Symbol

Navn

Betydning

Blank

Parameter godtar ikke inndata

Bindestrek

Indikerer parameternavn

<>

Vinklede braketter

Plassholder for tekst

[]

Braketter

Parameter som kan akseptere en eller flere verdier

{}

Seler

Parameter godtar et sett med verdier

Parametere som aksepterer inndata vil indikere typen data de trenger, for eksempel en streng, heltall, boolsk eller DateTime. For eksempel dette:

 Get-Process [[-Name] <string[]>] 

Betyr at Name-parameteren godtar én eller flere strengverdier, mens dette:

 Get-Process -Id <int[]> 

Betyr at Id-parameteren godtar én 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 angitt i syntaksen.

 Get-Process -Id 3016 

Du bør da bare se én prosess i listen:

  Slik oppdaterer du nettverksadapterdrivere på Windows 10

Opprette en rørledning

PowerShell behandler alle data som objekter. For å bygge et skript flyter disse objektene gjennom en serie Cmdlets eller funksjoner forbundet med et rørsymbol ( | ). Å velge de riktige Cmdletene og koble dem i en logisk sekvens ved hjelp av pipeline er avgjørende for et effektivt skript.

La oss si at du lager et skript for å sortere og vise de fem filene som tar mest lagringsplass i en mappe. Det er mer robuste måter å lage et filsorteringsskript på, men følgende enkeltlinje er lett å forstå:

For å gjøre dette i PowerShell, bruk 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

Lagrer Pipeline som et PS1-skript

Nå som vi har en fungerende pipeline, kan du lagre den som en PS1-skriptfil, slik at du ikke trenger å fortsette å skrive den hver gang du bruker den.

Den enkleste måten å lage en PS1-fil på er å lime inn skriptet i Notisblokk og lagre filen med filtypen .ps1.

Når du har opprettet PS1-filen din, kan du bruke den i PowerShell ved å kjøre ./ScriptName.ps1:

Gratulerer! Du kan nå lage PowerShell PS1-skript.

PowerShell er også tilgjengelig på Linux og macOS

PowerShell er et av de beste nybegynnerskriptspråkene noen kan lære. Selv om PowerShell bare var begrenset til Windows tidligere, er den oppdaterte versjonen av PowerShell nå også tilgjengelig på macOS og mange Linux-distribusjoner! Dette gjør PowerShell enda mer attraktivt ettersom du kan overføre kunnskapen din fra Windows til andre operativsystemer.