Ved at udnytte de rette Po­werS­hell-kom­man­do­er kan du anvende moduler med stor præcision. Disse vel­or­ga­ni­se­re­de cmdlets kan tilpasses yder­li­ge­re ved hjælp af valgfrie parametre. Vi præ­sen­te­rer de 40 vigtigste Po­werS­hell-kom­man­do­er, så du kan arbejde optimalt i dit system eller netværk.

Hvad er en Po­werS­hell-kommando?

Po­werS­hell, som har været for­u­din­stal­le­ret siden Windows 7, giver dig mulighed for at indtaste Po­werS­hell-kom­man­do­er, der derefter udføres af Windows. Ud over kom­man­do­linjens cmd-kom­man­do­er findes der en lang række andre kom­man­do­er eller cmdlets, som kun Po­werS­hell selv kan fortolke. Disse cmdlets består af et verbum og et navneord, der adskilles af en bin­de­streg. Derudover kan du udvide disse Po­werS­hell-kom­man­do­er med valgfri parametre, der adskilles af mellemrum. Po­werS­hells nyt­te­vær­di rækker ud over ad­mi­ni­stra­to­rer; det viser sig også at være uvur­der­ligt inden for udvikling. Med en overflod af for­u­din­stal­le­re­de Po­werS­hell-kom­man­do­er til rådighed, gør vi dig bekendt med de mest centrale.

De vigtigste Po­werS­hell-kom­man­do­er

Med Po­werS­hell-kom­man­do­er kan du udføre om­fat­ten­de ad­mi­ni­stra­ti­ve opgaver med blot få ind­tast­nin­ger. Blandt de grund­læg­gen­de kom­man­do­er, som du sand­syn­lig­vis vil bruge oftest, er dem, der giver et ind­le­den­de overblik over dit netværks struktur, viser en liste over andre Po­werS­hell-kom­man­do­er, hjælper med vigtige sik­ker­heds­kon­fi­gu­ra­tio­ner og muliggør vær­di­ful­de analyser. Her er nogle af de vigtigste Po­werS­hell-kom­man­do­er, du bør kende:

1. Get-Module -All

Brug kom­man­do­en Get-Module -All for at få et ind­le­den­de overblik over alle im­por­te­re­de Po­werS­hell-moduler.

Get-Module -All
shell

2. Get-Command

Der findes et væld af for­ud­de­fi­ne­re­de Po­werS­hell-kom­man­do­er. For at få et overblik over de Po­werS­hell-kom­man­do­er, der er til­gæn­ge­li­ge i øje­blik­ket, skal du blot bruge kom­man­do­en Get-Command. Denne kommando viser en over­sku­e­lig liste over alle mulige hand­lin­ger og giver en kort­fat­tet for­kla­ring på hver enkelt cmdlet. Dette gælder også, selvom du har in­stal­le­ret yder­li­ge­re moduler.

Get-Command
shell

3. Få hjælp

Listen over Get-Command-kom­man­do­er, der er beskrevet ovenfor, giver et ind­le­den­de overblik. Hvis du ønsker mere de­tal­je­re­de op­lys­nin­ger om en kommando og dens indstil­lin­ger, skal du bruge cmdlet’et Get-Help. Denne kommando henter hjæl­pe­fi­ler­ne på din pc og viser derefter alle til­gæn­ge­li­ge op­lys­nin­ger. For at aktivere den skal du kombinere Get-Help med den kommando, hvis syntaks du ønsker at se.

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

4. Get-Process

Hvis du hurtigt vil se en liste over de pro­gram­mer, ap­pli­ka­tio­ner og processer, der i øje­blik­ket kører på dit system, kan du bruge kom­man­do­en Get-Process. Hvis du angiver et bestemt program, får du yder­li­ge­re op­lys­nin­ger om netop det program.

Get-Process
shell

5. Get-Service

Kom­man­do­en Get-Service fungerer på samme måde som cmdlet’en Get-Process. Den adskiller sig dog ved at give op­lys­nin­ger om alle aktive tjenester. Hvis du ønsker at få op­lys­nin­ger om en bestemt tjeneste eller en bestemt kategori af tjenester, kan du nemt præcisere din fo­re­spørgsel.

Get-Service
shell

6. Stop proces

Du kan også bruge for­skel­li­ge Po­werS­hell-kom­man­do­er til at stoppe processer via kom­man­do­linj­en. En mulighed er kom­man­do­en Stop-Process. Du angiver den på­gæl­den­de proces ved hjælp af navn, ID eller andre at­tri­but­ter. Her er et eksempel:

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

Med -Confirm anmodes der om be­kræf­tel­se af kom­man­do­en. Kom­man­do­en -PassThru anmoder om be­kræf­tel­se af den stoppede proces. Dette sker ikke au­to­ma­tisk.

7. Konverter til HTML

For hurtigt at kunne iden­ti­fi­ce­re problemer eller po­ten­ti­el­le kom­pli­ka­tio­ner er det en stor fordel at have et over­sku­e­ligt overblik. Dette kan du opnå ved at bruge kom­man­do­en ConvertTo-HTML, som kon­ver­te­rer output fra dine Po­werS­hell-kom­man­do­er til en HTML-fil. Her vises op­lys­nin­ger­ne i et bru­ger­ven­ligt ko­lon­ne­for­mat. Kom­man­do­struk­tu­ren ser typisk sådan ud:

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

8. ConvertTo-Xml

Du kan gøre på samme måde, hvis du har brug for en XML-baseret re­præ­sen­ta­tion af et bestemt objekt. Det kan du gøre ved hjælp af kom­man­do­en ConvertTo-Xml. I det følgende eksempel kon­ver­te­rer du den aktuelle dato til XML-format:

Get-Date | ConvertTo-Xml
shell

9. Hvor-objekt

Du kan bruge kom­man­do­en Where-Object til at filtrere re­sul­ta­tet af en cmdlet. Når du udfører en kommando, får du ofte retur en lang række objekter, der in­de­hol­der flere op­lys­nin­ger, end du har brug for. Ved at bruge Where-Object sammen med en pipe kan du nøjes med at vise netop de op­lys­nin­ger, du er på udkig efter. Hvis du f.eks. vil se de tjenester, der er oprettet eller opdateret i år, kan du gøre det på følgende måde:

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

10. Vis historik

Hvis du vil se en liste over alle de Po­werS­hell-kom­man­do­er, du har indtastet under en session, er Get-History det rette cmdlet. Sådan viser du en liste over alle Po­werS­hell-kom­man­do­er:

Get-History
shell

Med denne indstil­ling hentes kun de sidste ti Po­werS­hell-kom­man­do­er:

Get-History -Count 10
shell

11. Ryd historik

Du kan også slette listen over anvendte Po­werS­hell-kom­man­do­er. For at fjerne alle poster skal du bruge cmdlet’et Clear-History:

Clear-History
shell

For at slette udvalgte Po­werS­hell-kom­man­do­er skal du blot tilføje de relevante parametre. Følgende ind­tast­ning fjerner alle Po­werS­hell-kom­man­do­er, der in­de­hol­der ordet »Help« eller slutter med »Syntax«.

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

12. Tilføj historik

Det er også muligt at gemme Po­werS­hell-kom­man­do­er i en session. På den måde kan du hente dem frem igen senere. Den relevante cmdlet hedder Add-History.

Add-History
shell

13. Out-File

Hvis du vil gemme re­sul­ta­tet af dine Po­werS­hell-kom­man­do­er på din computer, skal du bruge cmdlet’en Out-File. Dette gemmer Po­werS­hell-kom­man­do­er­ne i en al­min­de­lig tekstfil under den angivne sti.

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

14. Kopier-element

I Po­werS­hell kan du også kopiere elementer og gemme kopien et andet sted. Brug kom­man­do­en Copy-Item, og angiv det bibliotek, hvor kopien skal gemmes. Det foregår på følgende måde:

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

15. Get-ChildItem

Du kan bruge kom­man­do­en Get-ChildItem til at hente elementer fra et eller flere lag­rings­ste­der. Hvis der er un­de­r­e­le­men­ter, vises disse også. Denne kommando viser som standard at­tri­but­ter, tids­stemp­let for den seneste ændring, fil­stør­rel­sen og ele­men­tets navn. Hvis et lag­rings­sted er tomt, vises der ingen re­sul­ta­ter.

Get-ChildItem -Path C:\example
shell

Egen­ska­ber­ne vises under linjen »Mode«. Følgende egen­ska­ber er al­min­de­li­ge:

  • a (arkiv)
  • d (mappe)
  • h (skjult)
  • l (link)
  • r (skri­ve­be­skyt­tet)
  • s (system)

16. Indstil-Aut­hen­ti­co­de-signatur

For at beskytte dine filer kan du forsyne dem med en Aut­hen­ti­co­de-signatur ved hjælp af kom­man­do­en Set-Aut­hen­ti­co­de­Sig­na­tu­re. Dette fungerer dog kun for filer, der un­der­støt­ter Subject Interface Package (SIP).

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

17. Invoke-Item

Invoke-Item er den nemmeste måde at udføre den stan­dard­hand­ling, der er knyttet til en bestemt fil. Denne kommando sikrer for eksempel, at en ek­se­kver­bar fil køres direkte, eller at en do­ku­ment­fil åbnes i stan­dard­pro­gram­met. I dette eksempel åbnes filen som standard i Microsoft Word:

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

18. Start-Job

For at starte en bag­grunds­op­ga­ve på din lokale computer kan du bruge den relevante kommando til dette formål. Med Start-Job kan du køre en bestemt kommando i bag­grun­den uden at forstyrre den aktuelle session.

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

Udfør hand­lin­ger med disse Po­werS­hell-kom­man­do­er

Mens de tidligere Po­werS­hell-kom­man­do­er primært havde til formål at give et overblik, kan du også udføre for­skel­li­ge hand­lin­ger ved hjælp af de relevante cmdlets og dermed øge systemets pro­duk­ti­vi­tet. Følgende Po­werS­hell-kom­man­do­er strøm­li­ner dit ar­bejds­for­løb.

19. Ryd indhold

Hvis man vil slette indholdet af et element uden at fjerne selve elementet, er kom­man­do­en Clear-Content det oplagte valg. Et eksempel på brugen af denne kommando er at slette teksten i et dokument, mens selve filen forbliver intakt. Det gøres på følgende måde:

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

20. ForEach-Object

Med kom­man­do­en ForEach-Object kan du udføre en handling på alle elementer i en samling af in­pu­tob­jek­ter. I dette eksempel dividerer vi tre heltal i en matrix med 10:

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

21. Sam­men­lign-objekt

For at undgå manuel sam­men­lig­ning af for­skel­li­ge sæt objekter kan du bruge cmdlet’en Compare-Object. Denne kommando genererer en rapport, der fremhæver for­skel­le­ne mellem posterne. Den første post fungerer som re­fe­ren­ceob­jekt, og den anden post som for­skel­sob­jekt. Du kan angive, hvilke faktorer der skal sam­men­lig­nes, og hvis disse op­lys­nin­ger udelades, sam­men­lig­nes kun stren­gre­sul­ta­ter­ne. Outputtet er opdelt i egen­ska­ber, der kun fo­re­kom­mer i re­fe­ren­ceob­jek­tet (<), og egen­ska­ber, der kun fo­re­kom­mer i for­skel­sob­jek­tet (>). I dette eksempel in­de­hol­der document1.txt værdierne Berlin, London og Paris. Document2.txt in­de­hol­der Berlin, Wien og 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

Indhold, der fo­re­kom­mer i begge do­ku­men­ter (i dette tilfælde »Berlin«), vises ikke som standard.

22. Nyt objekt

En af de mest nyttige Po­werS­hell-kom­man­do­er er New-Object. Du kan bruge denne cmdlet til at oprette en instans af et objekt fra .NET Framework eller Component Object Model (COM). Hvis du f.eks. vil oprette et System.Version-objekt med »1.2.3.4« som kon­struk­tør­streng, udføres kom­man­do­en som følger:

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

23. Select-Object

Brug kom­man­do­en Select-Object til at vælge et objekt eller en gruppe af objekter, der har de egen­ska­ber, du har defineret. Du kan angive følgende parametre:

  • Først
  • Sidste
  • Unikt
  • Spring over
  • Indeks

I det følgende eksempel bruger vi Po­werS­hell-kom­man­do­er­ne Get-Process og Sort-Object til at vise de tre processer, der bruger mest hukom­mel­se på det tidspunkt, hvor kom­man­do­en udføres.

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

24. Opret alias

Windows-genveje er nyttige til at udføre hand­lin­ger endnu hurtigere. Po­werS­hell tilbyder også denne mulighed. Du kan bruge cmdlet’et Set-Alias til at definere en genvej til for­skel­li­ge Po­werS­hell-kom­man­do­er. I det følgende eksempel opretter vi aliaset »ci« til kom­man­do­en Get-ChildItem for den aktuelle session.

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

25. Set-Location

Brug kom­man­do­en Set-Location til at ændre pla­ce­rin­gen af ar­bejds­hukom­mel­sen. Mulige nye pla­ce­rin­ger er mapper, un­der­map­per, re­gi­stre­rings­da­ta­ba­se­pla­ce­rin­ger eller ud­by­der­sti­er. I det følgende eksempel angiver vi drevet C: som den aktuelle lag­rings­pla­ce­ring:

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

26. Indstil­ling af service

Du kan bruge cmdlet’et Set-Service til at in­ter­a­ge­re med en tjeneste og starte, stoppe eller sætte den på pause. Det er også muligt at ændre tje­ne­stens egen­ska­ber. I det følgende eksempel ændrer vi vis­nings­nav­net på en tjeneste fra »New Wor­k­sta­tion« til »Old Wor­k­sta­tion«.

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

27. Indstil tidszone

Hvis du vil ændre systemets tidszone, er kom­man­do­en Set-TimeZone det rette valg. Brug denne kommando for at indstille den ko­or­di­ne­re­de uni­ver­sel­le tid som den nye systemtid:

Set-TimeZone -Id "UTC"
shell

28. Genstart com­pu­te­ren

Du kan genstarte ope­ra­tiv­sy­ste­met på din lokale computer eller en fjer­n­com­pu­ter ved hjælp af den relevante Po­werS­hell-kommando, der hedder Restart-Computer. Den udføres på følgende måde:

For din lokale computer:

Restart-Computer
shell

For udvalgte computere i dit netværk:

Restart-Computer -ComputerName Server01, Server03
shell

29. Genstart tjeneste

Hvis du vil stoppe og genstarte en tjeneste ved hjælp af Po­werS­hell-kom­man­do­er, er Restart-Service det rette cmdlet. Du kan f.eks. genstarte alle tjenester, der begynder med »Net«:

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

30. Tøm pa­pir­kur­ven

Pa­pir­kur­ven bør tømmes re­gel­mæs­sigt, hvilket også kan gøres via Po­werS­hell. Kom­man­do­en hedder Clear-Re­cycle­Bin.

Clear-RecycleBin
shell

31. Get-Com­pu­te­r­In­fo

Kom­man­do­en Get-Com­pu­te­r­In­fo bruges til at hente op­lys­nin­ger om systemet og ope­ra­tiv­sy­ste­met.

Get-ComputerInfo
shell

32. Flyt-element

Når du skal flytte et element fra et sted til et andet, har du flere Po­werS­hell-kom­man­do­er til rådighed. Den mest anvendte mulighed er dog Move-Item. I dette eksempel flytter vi filen old.txt fra C:-drevet til mappen D:\Temp og omdøber den samtidig til new.txt.

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

Over­våg­ning og fejl­find­ing ved hjælp af de relevante Po­werS­hell-kom­man­do­er

Po­werS­hell-kom­man­do­er, der gør det muligt at overvåge og kon­trol­le­re systemet, er særdeles vær­di­ful­de, især når man tester et nyt netværks ydeevne under re­a­li­sti­ske forhold. Følgende Po­werS­hell-kom­man­do­er er særligt nyttige til disse formål.

33. Fejl­find­ings­pro­ces

Fejl­find­ing er en vigtig proces, der sikrer, at alle indstil­lin­ger og processer kører uden fejl. For at gøre dette skal du downloade og kon­fi­gu­re­re de relevante fejl­find­ings­værk­tø­jer. Når dette er gjort, skal du bruge kom­man­do­en Debug-Process. I det følgende eksempel bruger vi et fejl­find­ings­værk­tøj til Explorer:

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

Hvis du vil fejlfinde flere processer på samme tid, skal du blot adskille dem med kommaer.

34. Aktivér-PS­Bre­akpo­int

For at aktivere bestemte bre­akpo­ints skal du bruge kom­man­do­en Enable-PS­Bre­akpo­int. Dette indstil­ler cmdletten til værdien »true« rent teknisk set. Brug disse Po­werS­hell-kom­man­do­er til at aktivere alle bre­akpo­ints i den aktuelle session:

Get-PSBreakpoint | Enable-PSBreakpoint
shell

Brug denne kommando til at aktivere bre­akpo­ints ved hjælp af deres ID:

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. Deaktiver-PS­Bre­akpo­int

Hvis du vil de­ak­ti­ve­re Po­werS­hell-bre­akpo­ints igen, skal du bruge cmdlet’en Disable-PS­Bre­akpo­int. Teknisk set sættes værdien for kom­man­do­en Enable-PS­Bre­akpo­int til »false«. For at de­ak­ti­ve­re et bre­akpo­int med ID 0 skal du indtaste følgende:

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

På Windows-enheder kan du hente ydel­ses­da­ta ved hjælp af Po­werS­hell. Den relevante kommando til denne opgave er Get-Counter, som kan bruges til både din lokale computer og fjer­n­com­pu­te­re. I det følgende eksempel henter vi data fra den lokale computer:

Get-Counter -ListSet *
shell

37. Start-Sleep

Det kan være afgørende at sætte et script eller en session på pause, især når systemet er over­be­la­stet. Po­werS­hell har kom­man­do­en Start-Sleep til dette formål, hvor du kan angive, hvor længe ak­ti­vi­te­ter­ne skal sættes på pause. I det følgende eksempel sættes ud­fø­rel­sen på pause i to sekunder:

Start-Sleep -Seconds 2
shell

38. Test-Path

Brug kom­man­do­en Test-Path til at kon­trol­le­re, om alle elementer i en bestemt sti er til stede. De mulige re­sul­ta­ter er »True« eller »False«.

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

39. Test­for­bin­del­se

Du kan også kon­trol­le­re net­værks­for­bin­del­sen i dit netværk ved hjælp af Po­werS­hell. Dette gøres ved at sende ICMP-ek­ko­an­mod­nings­pak­ker til bestemte modtagere via kom­man­do­en Test-Con­nection, som anmoder om svar via Internet Control Message Protocol (ICMP). I vores eksempel sender vi en anmodning til Server02 via IPv6-pro­tokol­len.

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

Når du skal se en eller flere hæn­del­ses­lo­g­fi­ler, har du ad­skil­li­ge Po­werS­hell-kom­man­do­er til rådighed. Den mest praktiske cmdlet til dette formål er Get-WinEvent. For at hente alle logfiler fra din lokale computer kan du bruge følgende kommando:

Get-WinEvent -ListLog *
shell
Gå til ho­ved­me­nu­en