Genom att använda lämpliga Po­werS­hell-kommandon kan du använda moduler med precision. Dessa väl­or­ga­ni­se­ra­de cmdlets kan anpassas yt­ter­li­ga­re med hjälp av valfria pa­ra­met­rar. Vi pre­sen­te­rar de 40 vik­ti­gas­te Po­werS­hell-kom­man­do­na så att du kan arbeta optimalt i ditt system eller nätverk.

Vad är ett Po­werS­hell-kommando?

Po­werS­hell, som är förinstal­le­rat sedan Windows 7, låter dig skriva in Po­werS­hell-kommandon som sedan körs av Windows. Förutom kom­man­do­ra­dens cmd-kommandon finns det många andra kommandon eller cmdlets som bara kan förstås av Po­werS­hell själv. Dessa cmdlets består av ett verb och ett sub­stan­tiv, som är åtskilda med ett bin­de­streck. Dessutom kan du förbättra dessa Po­werS­hell-kommandon med valfria pa­ra­met­rar, åtskilda med mel­lanslag. Po­werS­hells an­vänd­bar­het sträcker sig bortom ad­mi­nist­ra­tö­rer; det är också ovär­der­ligt inom ut­veck­lings­om­rå­det. Med en uppsjö av förinstal­le­ra­de Po­werS­hell-kommandon till­gäng­li­ga, gör vi dig bekant med de vik­ti­gas­te.

De vik­ti­gas­te Po­werS­hell-kom­man­do­na

Med Po­werS­hell-kommandon kan du utföra om­fat­tan­de ad­mi­nist­ra­ti­va uppgifter med bara några få in­mat­ning­ar. Bland de grund­läg­gan­de kommandon som du troligen kommer att använda oftast finns de som ger en initial översikt över nät­ver­kets struktur, listar andra Po­werS­hell-kommandon, hjälper till med viktiga sä­ker­hets­kon­fi­gu­ra­tio­ner och möjliggör vär­de­ful­la analyser. Här är några av de vik­ti­gas­te Po­werS­hell-kom­man­do­na som du bör känna till:

1. Get-Module -All

För att få en första översikt över alla im­por­te­ra­de Po­werS­hell-moduler använder du kommandot Get-Module -All.

Get-Module -All
shell

2. Get-Command

Det finns ett stort antal för­de­fi­ni­e­ra­de Po­werS­hell-kommandon. För att få en översikt över de Po­werS­hell-kommandon som för när­va­ran­de är till­gäng­li­ga använder du helt enkelt kommandot Get-Command. Detta kommando listar alla möjliga åtgärder och ger kort­fat­ta­de för­kla­ring­ar till re­spek­ti­ve cmdlet. Detta gäller även om du har in­stal­le­rat yt­ter­li­ga­re moduler.

Get-Command
shell

3. Get-Help

Listan Get-Command som beskrivs ovan ger en första översikt. För mer de­tal­je­rad in­for­ma­tion om ett kommando och dess al­ter­na­tiv använder du cmdlet Get-Help. Detta kommando öppnar hjälp­fi­ler­na på din dator och visar all till­gäng­lig in­for­ma­tion. För att aktivera det kom­bi­ne­rar du Get-Help med det kommando vars syntax du vill visa.

Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell

4. Get-Process

För att snabbt kon­trol­le­ra listan över aktiva ap­pli­ka­tio­ner, program och processer på ditt system kan du använda kommandot Get-Process. Om du anger en viss ap­pli­ka­tion får du yt­ter­li­ga­re in­for­ma­tion om just den ap­pli­ka­tio­nen.

Get-Process
shell

5. Get-Service

Kommandot Get-Service fungerar på samma sätt som cmdlet Get-Process. Det skiljer sig dock genom att det ger in­for­ma­tion om alla aktiva tjänster. Om du vill få in­for­ma­tion om en viss tjänst eller en specifik kategori av tjänster kan du enkelt spe­ci­fi­ce­ra din begäran.

Get-Service
shell

6. Stoppa processen

Du kan också använda olika Po­werS­hell-kommandon för att stoppa processer via skalet. Ett al­ter­na­tiv är kommandot Stop-Process. Du de­fi­ni­e­rar mot­sva­ran­de process med namn, ID eller andra attribut. Här är ett exempel:

Stop-Process -Name "processname"
shell
Stop-Process -Id 3582 -Confirm -PassThru
shell

En be­kräf­tel­se av kommandot begärs med -Confirm. Kommandot -PassThru begär be­kräf­tel­se av den stoppade processen. Detta görs inte au­to­ma­tiskt.

7. Kon­ver­te­ra till HTML

För att snabbt kunna iden­ti­fi­e­ra problem eller po­ten­ti­el­la kom­pli­ka­tio­ner är det oerhört för­del­ak­tigt att ha en tydlig visning. Du kan uppnå detta genom att använda kommandot ConvertTo-HTML, som överför utdata från dina Po­werS­hell-kommandon till en HTML-fil. Detta pre­sen­te­rar in­for­ma­tio­nen i ett an­vän­dar­vän­ligt ko­lumn­for­mat. Kom­man­d­o­struk­tu­ren ser van­ligt­vis ut så här:

Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
shell

8. Kon­ver­te­ra till XML

Du kan göra på liknande sätt om du behöver en XML-baserad re­pre­sen­ta­tion av ett specifikt objekt. Du kan göra detta med kommandot ConvertTo-Xml. I följande exempel kon­ver­te­rar du det aktuella datumet till XML-format:

Get-Date | ConvertTo-Xml
shell

9. Var-Objekt

Du kan använda kommandot Where-Object för att filtrera re­sul­ta­tet av ett cmdlet. När du kör ett kommando får du ofta många objekt som in­ne­hål­ler mer in­for­ma­tion än du behöver. Genom att använda Where-Object till­sam­mans med en pipe kan du visa endast den specifika in­for­ma­tion du söker. Om du till exempel vill visa tjänster som har skapats eller upp­da­te­rats i år kan du göra så här:

Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
shell

10. Get-History

För att lista alla Po­werS­hell-kommandon som du har angett under en session är Get-History rätt cmdlet. Så här listar du alla Po­werS­hell-kommandon:

Get-History
shell

Med denna spe­ci­fi­ka­tion anropar du endast de senaste tio Po­werS­hell-kom­man­do­na:

Get-History -Count 10
shell

11. Rensa historik

Du kan också ta bort listan över använda Po­werS­hell-kommandon. För att ta bort alla poster använder du cmdlet Clear-History:

Clear-History
shell

För att ta bort utvalda Po­werS­hell-kommandon lägger du bara till mot­sva­ran­de pa­ra­met­rar. Följande inmatning tar bort alla Po­werS­hell-kommandon som in­ne­hål­ler “Help” eller slutar med “Syntax”.

Clear-History -Command *Help*, *Syntax
shell

12. Lägg till historik

Det är också möjligt att lägga till Po­werS­hell-kommandon till en session. Detta gör att du kan hämta dem igen senare. Det lämpliga cmdlet är Add-History.

Add-History
shell

13. Ut-fil

Om du vill spara utdata från dina Po­werS­hell-kommandon på din dator använder du cmdlet Out-File. Detta lagrar Po­werS­hell-kom­man­do­na i en rå textfil under den angivna sökvägen.

Get-Process | Out-File -FilePath .\Process.txt
shell

14. Kopiera objekt

I Po­werS­hell kan du också kopiera element och spara kopian på en annan plats. Använd kommandot Copy-Item och ange den katalog där kopian ska sparas. Det fungerar så här:

Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"
shell

15. Get-ChildItem

Du kan använda kommandot Get-ChildItem för att hämta objekt från en eller flera lag­rings­plat­ser. Om det finns un­de­re­le­ment visas även dessa. Detta kommando listar attribut, tids­stäm­peln för den senaste ändringen, fil­stor­le­ken och ele­men­tets namn som standard. Om en lag­rings­plats är tom utelämnas utdata.

Get-ChildItem -Path C:\example
shell

At­tri­bu­ten visas under raden “Mode” (Läge). Följande egen­ska­per är vanliga:

  • a (arkiv)
  • d (katalog)
  • h (dold)
  • l (länk)
  • r (skriv­skyd­dad)
  • s (system)

16. Ställ in au­ten­ti­se­rings­sig­na­tur

För att skydda dina filer kan du förse dem med en Authen­ti­co­de-signatur med kommandot Set-Authen­ti­co­de­Sig­na­tu­re. Detta fungerar dock endast för filer som stöder Subject Interface Package (SIP).

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell

17. Anropa-objekt

Invoke-Item är det enklaste sättet att utföra stan­dardåt­gär­den för en specifik fil. Det här kommandot sä­ker­stäl­ler till exempel att en körbar fil körs direkt eller att en do­ku­ment­fil öppnas i stan­dard­pro­gram­met. I det här exemplet öppnas filen i Microsoft Word som standard:

Invoke-Item "C:\Test\example.doc"
shell

18. Start-Job

För att starta ett bak­grunds­jobb på din lokala dator kan du använda lämpligt kommando för detta ändamål. Start-Job låter dig köra ett specifikt kommando i bak­grun­den utan att in­te­ra­ge­ra med den aktuella sessionen.

Start-Job -ScriptBlock { Get-Process -Name pwsh }
shell

Utför åtgärder med dessa Po­werS­hell-kommandon

Medan de tidigare Po­werS­hell-kom­man­do­na främst var inriktade på att ge över­sik­ter, kan du också utföra olika åtgärder med hjälp av lämpliga cmdlets, vilket för­bätt­rar systemets pro­duk­ti­vi­tet. Följande Po­werS­hell-kommandon ef­fek­ti­vi­se­rar ditt ar­bets­flö­de.

19. Tydligt innehåll

För att radera in­ne­hål­let i ett element utan att ta bort själva elementet är kommandot Clear-Content det perfekta valet. Ett exempel på dess an­vänd­ning är att radera texten från ett dokument utan att ta bort själva filen. Processen utförs på följande sätt:

Clear-Content C:\Temp\example.txt
shell

20. ForEach-Object

Med kommandot ForEach-Object kan du utföra en operation på alla element i en samling av in­mat­nings­ob­jekt. I det här exemplet delar vi tre heltal i en matris med 10:

10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
shell

21. Jämför objekt

För att undvika manuell jäm­fö­rel­se av olika upp­sätt­ning­ar objekt kan du använda cmdlet Compare-Object. Detta kommando genererar en rapport som markerar skill­na­der­na mellan posterna. Den första posten fungerar som re­fe­ren­s­ob­jekt och den andra posten som skill­nads­ob­jekt. Du kan ange vilka faktorer som ska jämföras, och om denna in­for­ma­tion utelämnas kommer endast sträng­re­sul­ta­ten att jämföras. Ut­mat­ning­en delas upp i egen­ska­per som endast fö­re­kom­mer i re­fe­ren­s­ob­jek­tet (<) och egen­ska­per som endast fö­re­kom­mer i skill­nads­ob­jek­tet (>). I det här exemplet in­ne­hål­ler document1.txt värdena Berlin, London och Paris. Document2.txt in­ne­hål­ler Berlin, Wien och Amsterdam.

Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Document1.txt) -DifferenceObject (Get-Content -Path C:\Test\Document2.txt)
InputObject	SideIndicator
---------------	-----------------
Wien		==>
Amsterdam	==>
London		<==
Paris		<==
shell

Innehåll som fö­re­kom­mer i båda do­ku­men­ten (i detta fall ”Berlin”) visas inte som standard.

22. Nytt objekt

Ett av de mest an­vänd­ba­ra Po­werS­hell-kom­man­do­na är New-Object. Du kan använda detta cmdlet för att in­stan­si­e­ra ett objekt från .NET-ramverket eller en Component Object Model (COM). Om du till exempel vill skapa ett System.Version-objekt med “1.2.3.4” som kon­struk­törs­sträng, körs kommandot enligt följande:

New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell

23. Välj objekt

Använd kommandot Select-Object för att välja ett objekt eller en grupp objekt som har de egen­ska­per du har de­fi­ni­e­rat. Du kan ange följande pa­ra­met­rar för detta:

  • Först
  • Efternamn
  • Unik
  • Hoppa
  • Index

I följande exempel använder vi Po­werS­hell-kom­man­do­na Get-Process och Sort-Object för att visa de tre pro­ces­ser­na med högst min­nes­för­bruk­ning vid tid­punk­ten för in­mat­ning­en.

Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell

24. Ställ in alias

Windows-genvägar är an­vänd­ba­ra för att utföra åtgärder ännu snabbare. Po­werS­hell erbjuder också denna möjlighet. Du kan använda cmdlet Set-Alias för att definiera en genväg för olika Po­werS­hell-kommandon. I följande exempel skapar vi aliaset “ci” för kommandot Get-ChildItem för den aktuella sessionen.

PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell

25. Ställ in plats

För att ändra ar­bets­min­nets plats använder du kommandot Set-Location. Möjliga nya platser är kataloger, un­der­ka­ta­lo­ger, re­gis­ter­plat­ser eller le­ve­ran­törs­vä­gar. I följande exempel anger vi enheten C: som aktuell lag­rings­plats:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell

26. Set-Service

Du kan använda cmdlet Set-Service för att in­te­ra­ge­ra med en tjänst och starta, stoppa eller pausa den. Det är också möjligt att ändra tjänstens egen­ska­per. I följande exempel ändrar vi vis­nings­nam­net för en tjänst från “Ny ar­bets­sta­tion” till “Gammal ar­bets­sta­tion”.

Set-Service -Name New Workstation -DisplayName "Old Workstation"
shell

27. Ställ in tidszon

För att ändra tidszonen för ditt system är kommandot Set-TimeZone det rätta valet. För att ställa in den sam­ord­na­de uni­ver­sel­la tiden som ny systemtid använder du detta kommando:

Set-TimeZone -Id "UTC"
shell

28. Starta om datorn

Du kan starta om ope­ra­tiv­sy­ste­met på din lokala dator eller en fjärr­da­tor med hjälp av det lämpliga Po­werS­hell-kommandot Restart-Computer. Det kan köras på följande sätt:

För din lokala dator:

Restart-Computer
shell

För utvalda datorer i ditt nätverk:

Restart-Computer -ComputerName Server01, Server03
shell

29. Starta om tjänsten

För att stoppa och starta om en tjänst med Po­werS­hell-kommandon är Restart-Service det lämpliga cmdlet. Du kan till exempel starta om alla tjänster som börjar med “Net”:

PS C:\> Restart-Service -DisplayName "net*"
shell

30. Rensa pap­pers­kor­gen

Pap­pers­kor­gen bör tömmas re­gel­bun­det, vilket också är möjligt via Po­werS­hell. Kommandot är Clear-Re­cycle­Bin.

Clear-RecycleBin
shell

31. Get-Com­pu­terIn­fo

Kommandot Get-Com­pu­terIn­fo används för att hämta system- och ope­ra­tiv­sy­ste­me­gen­ska­per.

Get-ComputerInfo
shell

32. Flytta objekt

När du behöver flytta ett objekt från en plats till en annan finns det flera Po­werS­hell-kommandon att välja mellan. Det mest använda al­ter­na­ti­vet är dock Move-Item. I det här exemplet flyttar vi filen old.txt från enheten C: till katalogen D:\Temp och byter samtidigt namn på den till new.txt.

Move-Item -Path C:\old.txt -Destination D:\Temp\new.txt
shell

Över­vak­ning och fel­sök­ning med lämpliga Po­werS­hell-kommandon

Po­werS­hell-kommandon som möjliggör systemö­ver­vak­ning och kontroll är ex­cep­tio­nellt vär­de­ful­la, särskilt när man testar ett nytt nätverks prestanda under re­a­lis­tis­ka för­hål­lan­den. Följande Po­werS­hell-kommandon är särskilt an­vänd­ba­ra för dessa ändamål.

33. Fel­sök­nings­pro­cess

Fel­sök­ning är en viktig process för att sä­ker­stäl­la att alla in­ställ­ning­ar och processer fungerar utan fel. För att göra detta måste du ladda ner och kon­fi­gu­re­ra lämpliga felsökare. När detta är gjort använder du kommandot Debug-Process. I följande exempel använder vi en felsökare för Explorer:

PS C:\> Debug-Process -Name "Explorer"
shell

För att felsöka flera processer samtidigt, dela upp dem helt enkelt med kom­ma­tec­ken.

34. Aktivera-PS­Bre­ak­point

För att aktivera vissa bryt­punk­ter använder du kommandot Enable-PS­Bre­ak­point. Detta ställer in värdet för cmdlet till “true” ur ett tekniskt per­spek­tiv. Använd dessa Po­werS­hell-kommandon för att aktivera alla bryt­punk­ter i den aktuella sessionen:

Get-PSBreakpoint | Enable-PSBreakpoint
shell

Använd detta kommando för att aktivera bryt­punk­ter med hjälp av deras ID:

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. In­ak­ti­ve­ra PS­Bre­ak­point

För att in­ak­ti­ve­ra Po­werS­hell-bryt­punk­ter igen använder du kommandot Disable-PS­Bre­ak­point. Tekniskt sett sätts värdet för kommandot Enable-PS­Bre­ak­point till ”false”. För att in­ak­ti­ve­ra en brytpunkt med ID 0 anger du följande:

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

För Windows-enheter kan du hämta pre­stan­da­da­ta med hjälp av Po­werS­hell. Det lämpliga kommandot för denna uppgift är Get-Counter, som kan användas både för din lokala dator och för fjärr­da­to­rer. I följande exempel hämtar vi data från den lokala datorn:

Get-Counter -ListSet *
shell

37. Start-Sömn

Att pausa ett skript eller en session kan vara avgörande, särskilt vid över­be­last­ning av systemet. Po­werS­hell har kommandot Start-Sleep för detta ändamål, som gör att du kan ange hur länge ak­ti­vi­te­ter­na ska pausas. I följande exempel pausas ex­e­kve­ring­en i två sekunder:

Start-Sleep -Seconds 2
shell

38. Test-Path

Använd kommandot Test-Path för att kon­trol­le­ra om alla element i en viss sökväg finns. De möjliga re­sul­ta­ten är “True” eller “False”.

Test-Path -Path "C:\Documents and Settings\user"
False
shell

39. Testa an­slut­ning

Du kan också utvärdera nät­verk­san­slut­ning­en inom ditt nätverk med hjälp av Po­werS­hell. Detta görs genom att skicka ICMP-eko­för­fråg­nings­pa­ket till angivna mottagare via kommandot Test-Con­nec­tion, som begär svar via Internet Control Message Protocol (ICMP). I vårt exempel skickar vi en förfrågan till Server02 via IPv6-pro­to­kol­let.

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

När du behöver visa en eller flera hän­del­se­log­gar finns det olika Po­werS­hell-kommandon till ditt för­fo­gan­de. Det mest praktiska cmdlet för detta ändamål är Get-WinEvent. För att hämta alla loggar från din lokala dator kan du använda följande kommando:

Get-WinEvent -ListLog *
shell
Gå till huvudmeny