PowerShell Cmdlets


Cmdlets (uttalas command-lets) är de grundläggande byggstenarna i PowerShell. De fungerar som små, självständiga kommandon som var och en är utformad för att utföra en specifik uppgift. Det kan till exempel handla om att:

  • hämta information från systemet,
  • skapa eller ta bort objekt,
  • hantera filer och mappar,
  • starta eller stoppa tjänster,
  • eller kommunicera med nätverksresurser.
  • administrera katalogtjänster

Cmdlets är alltså inte samma sak som traditionella kommandon i t.ex. CMD (Kommandotolken), utan de är mer kraftfulla och objektorienterade. Det betyder att de inte bara returnerar text, utan riktiga .NET-objekt som kan bearbetas vidare i PowerShell.

Struktur: Verb-Noun

Alla cmdlets följer ett strikt och konsekvent namngivnings mönster:

Verb-Noun

Detta gör PowerShell-kommandon lätta att läsa, förstå och gissa sig till.

  • Verb: Beskriver vad kommandot gör – till exempel:
    Get, Set, New, Remove, Start, Stop, Invoke.
  • Noun: Anger vilket objekt åtgärden gäller – till exempel:
    Process, Service, Item, File, User, Computer.

Tillsammans bildar de ett kommando som är både logiskt och självbeskrivande.
Exempel: Hämta information om processer.

Get-Process

Exempel: Skapa ett nytt objekt (t.ex. en fil eller mapp).

New-Item

Exempel: Ta bort en tjänst.

Remove-Service

Syntaxen för att använda cmdlets (Verb-Noun):


Parametrar

Cmdlets kan nästan alltid kompletteras med parametrar, som används för att styra hur kommandot ska köras. Parametrar anges med ett minustecken () följt av parameterns namn, och ibland även ett värde.

Till exempel för att hämta information om just processen notepad kan följande cmdlets användas:

Get-Process -Name notepad

Här används parametern -Name för att hämta information om just processen notepad.

Det finns olika typer av parametrar:

  • Obligatoriska parametrar – måste anges för att kommandot ska fungera korrekt. Vilka parametrar som är obligatoriska varierar mellan olika cmdlets, och en prameter som är obligatorisk för en viss cmdlet behöver inte vara obligatorisk för en annan. Till exempel kan Get-Process köras utan några parametrar och returnerar då alla pågående processer. Get-Process -Name notepad returnerar endast en viss process.
  • Valfria parametrar – används för att justera beteendet, t.ex. visa mer information eller tvinga ett visst resultat.

En parameter kan ibland ha flera alias eller förkortningar, vilket gör kommandot snabbare att skriva.

Hjälp om parametrar och cmdlets

För att se mer information om en cmdlet, inklusive dess parametrar, kan du använda Get-Help.
Detta är ett mycket kraftfullt inbyggt hjälpverktyg i PowerShell. Till exempel:

Get-Help Get-Item -Parameter *

Detta kommando visar en lista över alla tillgängliga parametrar för cmdleten Get-Item, som till exempel:

  • -Credential
  • -Path
  • -LiteralPath
  • -Include
  • -Exclude
  • -Force
  • och flera andra.

Om du vill ha ännu mer detaljerad hjälp, kan du lägga till parametern -Full:

Get-Help Get-Service -Full

Det visar en fullständig beskrivning av cmdlet, dess syntax, exempel och alla parametrar.

Vad är .NET?

.NET (uttalas dot net) är en programmeringsplattform som utvecklats av Microsoft.
Den används för att skapa, köra och hantera program på Windows, men även på andra operativsystem som Linux och macOS (via .NET Core och senare versioner av .NET 6/7/8).

Man kan säga att .NET är det ”plattformen” som PowerShell bygger på.

PowerShell och .NET

PowerShell är inte ett vanligt kommandoskal som bara kör textkommandon. Det är i grunden ett .NET-baserat skriptspråk. Det betyder att varje cmdlet i PowerShell i själva verket är en .NET-klass som körs i bakgrunden. Till exempel när du skriver:

Get-Process

så anropas en .NET-klass som hämtar information om processer via Windows operativsystem.

Varför är .NET viktigt i PowerShell?

  • Det gör PowerShell mycket kraftfullt och flexibelt. Du kan använda alla färdiga klasser i .NET för avancerade uppgifter – utan att skriva komplexa kod.
  • Det ger objektorientering vilket betyder att istället för textsträngar arbetar PowerShell med riktiga objekt som har egenskaper och metoder.
  • Det möjliggör integration med nästan allt i Windows – filer, nätverk, register, tjänster, WMI, Active Directory och mer.