Vad är Windows PowerShell-skript?

Viktiga takeaways

  • PowerShell är ett skriptspråk som kan hjälpa till att automatisera datoruppgifter.
  • Cmdlets är Powershell-kommandon med en enda funktion. Du kan se tillgängliga kommandon med ”Hämta-kommando.”
  • PowerShell är tillgängligt på Windows, macOS och Linux.

PowerShell är ett skriptspråk som kan hjälpa dig att automatisera datoruppgifter enkelt och tillförlitligt. Ta reda på hur du använder det för att börja bygga skript för din Windows-dator.

PowerShell-skriptöversikt

För att börja skapa enkla PowerShell-skript på Windows behöver du veta om tre saker:

  • Cmdlets: kommandon för enstaka funktioner.
  • Parametrar: specificera vad, när, var och hur för Cmdlets/kommandon.
  • Pipeline: tar utdata från din Cmdlet och dess parametrar och ansluter den till andra Cmdlets och funktioner.

Genom att kombinera alla tre kan du skapa enkla skript för att automatisera uppgifter.

Här är ett exempel på en pipeline som visar hur du kan kombinera flera Cmdlets för att uppnå en uppgift:

För att köra denna pipeline i PowerShell, skulle du använda något i stil med detta kommando:

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

Cmdlets i detalj

Precis som alla skriptspråk är PowerShell förbyggt med kommandon för att manipulera objekt och utföra olika uppgifter. Dessa grundläggande kommandon inom PowerShell är kända som Cmdlets.

Cmdlets (uttalas som command-lets) är små enfunktionskommandon som används i PowerShell-miljön med tillägget .dll. De är lätta kodbitar som körs snabbare än funktioner på grund av deras kompilerade karaktär.

Det finns tusentals Cmdlets tillgängliga på PowerShell. Du behöver inte lära dig alla. Du kan börja med att lära dig några grundläggande PowerShell Cmdlets och sedan fortsätta lära dig när du går igenom din skriptresa. För att se Cmdlets som redan är installerade på din dator, kör:

 Get-Command 

Om du bläddrar igenom resultaten kommer du att märka att de följer ett verb-substantiv namnkonvention. Detta gör det lättare att förstå vad en viss Cmdlet gör.

Till exempel ger Get-Command en lista över kommandon som är tillgängliga i PowerShell. Get-Process ger dig de processer som för närvarande är aktiva, och Copy-Item kopierar en eller flera filer till en specifik katalog.

Cmdlets levereras också med omfattande dokumentation som inkluderar exempel, användningsinstruktioner och förklaringar av deras funktionalitet.

För att ta reda på mer om en specifik Cmdlet och hur du använder den, kör:

 Get-Help <name-of-cmdlet> 

PowerShell-parametrar förklaras

Cmdlets kan acceptera parametrar för att variera deras beteende. När du kör en Cmdlet eller funktion kan du tillhandahålla parametervärden för att ange vad, när, var och hur varje PowerShell-kommando körs.

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

Men vad händer om du bara vill få en specifik process? Du kan göra det med hjälp av parametrar. Till exempel, för att få alla Slack-processer, kan du använda parametern Name med Get-Process Cmdlet:

 Get-Process -Name Slack 

Du ser då bara de processer med namnet ”slack”:

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

Varje Cmdlet accepterar olika typer av parametrar. Använd kommandot Get-Help för att se de accepterade parametrarna för en Cmdlet i avsnittet SYNTAX.

 Get-Help Get-Process 

Du kommer att se en lista över alla möjliga sätt du kan köra den givna Cmdleten:

I det här fallet accepterar Get-Process Cmdlet parametrar som Name, Id, ComputerName, Module, FileVersionInfo och andra vanliga parametrar. Symbolerna här betyder:

Symbol

namn

Menande

Tom

Parametern accepterar inte inmatning

Bindestreck

Indikerar parameternamn

<>

Vinklade fästen

Platshållare för text

[]

Fästen

Parameter som kan acceptera ett eller flera värden

{}

Tandställning

Parameter accepterar en uppsättning värden

Parametrar som accepterar indata kommer att indikera vilken typ av data de behöver, såsom en sträng, heltal, boolean eller DateTime. Till exempel detta:

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

Innebär att parametern Name accepterar ett eller flera strängvärden, medan detta:

 Get-Process -Id <int[]> 

Betyder att Id-parametern accepterar ett eller flera heltalsvärden.

Det tidigare Get-Process-exemplet använde parametern Name för att begränsa resultaten. Men om du vill begränsa det till en ännu mer specifik process kan du använda ID-parametern, som kräver ett heltal enligt syntaxen.

 Get-Process -Id 3016 

Du bör då bara se en process i listan:

Skapa en pipeline

PowerShell behandlar all data som objekt. För att bygga ett skript flyter dessa objekt genom en serie Cmdlets eller funktioner kopplade med en rörsymbol ( | ). Att välja rätt Cmdlets och ansluta dem i en logisk sekvens med hjälp av pipeline är avgörande för ett effektivt skript.

Säg att du skapar ett skript för att sortera och visa de fem filerna som tar mest lagringsutrymme i en mapp. Det finns mer robusta sätt att skapa ett filsorteringsskript, men följande one-liner är lätt att förstå:

För att göra detta i PowerShell, använd 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

Sparar Pipeline som ett PS1-skript

Nu när vi har en fungerande pipeline kan du spara den som en PS1-skriptfil, så att du inte behöver fortsätta skriva den varje gång du använder den.

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

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

Grattis! Du kan nu skapa PowerShell PS1-skript.

PowerShell är också tillgängligt på Linux och macOS

PowerShell är ett av de bästa nybörjarskriptspråken någon kan lära sig. Även om PowerShell endast var begränsad till Windows tidigare, är den uppdaterade versionen av PowerShell nu även tillgänglig på macOS och många Linux-distributioner! Detta gör PowerShell ännu mer tilltalande eftersom du kan överföra din kunskap från Windows till andra operativsystem.