Vad är Windows PowerShell-skript?

By rik

Viktiga punkter

  • PowerShell fungerar som ett skriptspråk för att underlätta automatisering av datorrelaterade uppgifter.
  • Cmdlets representerar enskilda kommandon med specifika funktioner. Tillgängliga kommandon kan listas med ”Get-Command”.
  • PowerShell kan användas i olika operativsystem, inklusive Windows, macOS och Linux.

PowerShell är ett kraftfullt skriptspråk som erbjuder möjligheten att enkelt och pålitligt automatisera arbetsuppgifter på datorn. Genom att lära dig använda PowerShell kan du skapa egna skript för din Windows-dator.

Översikt över PowerShell-skript

För att börja skriva grundläggande PowerShell-skript i Windows är det bra att känna till följande tre kärnkoncept:

  • Cmdlets: Enkla kommandon med tydliga funktioner.
  • Parametrar: Används för att definiera vad, när, var och hur Cmdlets/kommandon ska utföras.
  • Pipeline: Överför utdata från en Cmdlet, tillsammans med dess parametrar, till andra Cmdlets eller funktioner.

Genom att kombinera dessa tre element kan du enkelt skapa skript för att automatisera olika uppgifter.

Här visas ett exempel på en pipeline som illustrerar hur flera Cmdlets kan samverka för att uppnå ett specifikt mål:

För att köra denna pipeline i PowerShell kan du använda ett kommando som liknar detta:

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

Djupdykning i Cmdlets

I likhet med andra skriptspråk levereras PowerShell med ett antal inbyggda kommandon som gör det möjligt att manipulera objekt och utföra olika åtgärder. Dessa grundläggande kommandon inom PowerShell kallas Cmdlets.

Cmdlets, som uttalas ”command-lets”, är små kommandon med en enda funktion. De fungerar inom PowerShell-miljön med tillägget .dll. Dessa kodbitar är snabbare än funktioner på grund av deras kompilerade form.

Det finns tusentals tillgängliga Cmdlets i PowerShell. Det är inte nödvändigt att lära sig dem alla på en gång. Du kan börja med att bekanta dig med några grundläggande PowerShell Cmdlets och sedan utöka dina kunskaper efter hand som du utvecklas. För att visa de Cmdlets som är installerade på din dator, kan du använda följande kommando:

 Get-Command 

När du granskar resultaten kommer du att se att de följer en specifik namngivningskonvention med ett verb och ett substantiv. Detta gör det enklare att förstå vad en viss Cmdlet gör.

Till exempel, Get-Command visar en lista över kommandon som finns tillgängliga i PowerShell. Get-Process ger information om de processer som för närvarande körs, och Copy-Item används för att kopiera en eller flera filer till en specifik plats.

Cmdlets har även omfattande dokumentation som inkluderar användningsexempel, instruktioner och detaljerade beskrivningar av deras funktionalitet.

För att lära dig mer om en specifik Cmdlet och hur den används, använd följande kommando:

 Get-Help <namn-på-cmdlet> 

Förklaring av PowerShell-parametrar

Cmdlets kan ta emot parametrar för att modifiera sitt beteende. När du kör en Cmdlet eller funktion kan du använda parametervärden för att specificera vad, när, var och hur varje PowerShell-kommando ska utföras.

Till exempel kommer Get-Process att hämta och visa alla aktiva processer i ditt operativsystem:

Men om du bara vill hitta en specifik process, kan du använda parametrar. För att till exempel lista alla Slack-processer, kan du använda parametern Name med Cmdleten Get-Process:

 Get-Process -Name Slack 

Resultatet blir då endast de processer som heter ”slack”:

Vissa parametrar är ”positionella”, vilket innebär att deras namn är valfritt. I det här fallet utför Get-Process -Name Slack och Get-Process Slack samma sak.

Varje Cmdlet accepterar olika typer av parametrar. Genom att använda kommandot Get-Help kan du se vilka parametrar som är tillgängliga för en viss Cmdlet, under avsnittet SYNTAX.

 Get-Help Get-Process 

Där visas en lista över alla möjliga sätt att använda den specifika Cmdleten:

I detta fall accepterar Cmdleten Get-Process parametrar som Name, Id, ComputerName, Module, FileVersionInfo, samt andra vanliga parametrar. Följande symboler används:

Symbol Namn Betydelse
Tom Parametern tar inte emot indata
Bindestreck Anger parameterns namn
<> Vinkelparenteser Platshållare för text
[] Hakparenteser Parameter som kan acceptera ett eller flera värden
{} Måsvingar Parameter accepterar en uppsättning värden

Parametrar som tar emot indata indikerar vilken typ av data de kräver, till exempel en sträng, ett heltal, ett booleskt värde eller ett DateTime-värde. Exempelvis detta:

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

Betyder att parametern Name kan acceptera en eller flera strängvärden, medan detta:

 Get-Process -Id <int[]> 

Betyder att parametern Id kan acceptera en eller flera heltal.

Det tidigare Get-Process-exemplet använde parametern Name för att begränsa sökresultaten. För att begränsa sökningen ytterligare kan du använda parametern ID som kräver ett heltal enligt syntaxen.

 Get-Process -Id 3016 

Resultatet visar då endast den process med angivet ID:

Skapa en pipeline

PowerShell behandlar all data som objekt. När du utvecklar ett skript flödar dessa objekt genom en sekvens av Cmdlets eller funktioner, kopplade samman med en rörsymbol (|). Att välja rätt Cmdlets och sammanlänka dem på ett logiskt sätt med hjälp av pipelines är avgörande för att skapa effektiva skript.

Anta att du skapar ett skript för att sortera och visa de fem filer som tar upp mest lagringsutrymme i en mapp. Det finns mer avancerade metoder för att skapa ett filsorteringsskript, men följande one-liner är lätt att förstå:

För att göra detta i PowerShell använder du en pipeline som ser ut ungefär så här:

 Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize

Spara pipeline som ett PS1-skript

När du har en fungerande pipeline kan du spara den som en PS1-skriptfil. Detta gör att du inte behöver skriva om den varje gång du vill använda den.

Det enklaste sättet att skapa en PS1-fil är att klistra in skriptet i Anteckningar och spara filen med filtillägget .ps1.

Efter att du har skapat din PS1-fil, kan du köra den i PowerShell genom att använda kommandot ./ScriptName.ps1:

Grattis! Du har nu skapat ett PowerShell PS1-skript.

PowerShell finns även för Linux och macOS

PowerShell är ett av de bästa skriptspråken för nybörjare. Även om PowerShell tidigare var begränsat till Windows, så är den uppdaterade versionen av PowerShell nu även tillgänglig för macOS och många Linux-distributioner! Detta gör PowerShell ännu mer attraktivt eftersom du kan använda dina kunskaper från Windows i andra operativsystem.