# Hvad er PowerShell-kommandoer? De 40 vigtigste kommandoer på et øjeblik

Ved at udnytte de rette PowerShell-kommandoer kan du anvende moduler med stor præcision. Disse velorganiserede cmdlets kan tilpasses yderligere ved hjælp af valgfrie parametre. Vi præsenterer de 40 vigtigste PowerShell-kommandoer, så du kan arbejde optimalt i dit system eller netværk.

## Hvad er en PowerShell-kommando?

PowerShell, som har været forudinstalleret siden Windows 7, giver dig mulighed for at indtaste PowerShell-kommandoer, der derefter udføres af Windows. Ud over kommandolinjens cmd-kommandoer findes der en lang række andre kommandoer eller cmdlets, som kun PowerShell selv kan fortolke. Disse cmdlets **består af et verbum og et navneord**, der adskilles af en bindestreg. Derudover kan du udvide disse PowerShell-kommandoer med **valgfri parametre**, der adskilles af mellemrum. PowerShells nytteværdi rækker ud over administratorer; det viser sig også at være uvurderligt inden for udvikling. Med en overflod af forudinstallerede PowerShell-kommandoer til rådighed, gør vi dig bekendt med de mest centrale.

## De vigtigste PowerShell-kommandoer

Med PowerShell-kommandoer kan du udføre omfattende administrative opgaver med blot få indtastninger. Blandt de grundlæggende kommandoer, som du sandsynligvis vil bruge oftest, er dem, der giver et indledende overblik over dit netværks struktur, viser en liste over andre PowerShell-kommandoer, hjælper med vigtige sikkerhedskonfigurationer og muliggør værdifulde analyser. Her er nogle af de vigtigste PowerShell-kommandoer, du bør kende:

### 1. Get-Module -All

Brug kommandoen **Get-Module -All** for at få et indledende overblik over alle importerede PowerShell-moduler.

```shell
Get-Module -All
```

### 2. Get-Command

Der findes et væld af foruddefinerede PowerShell-kommandoer. For at få et overblik over de PowerShell-kommandoer, der er tilgængelige i øjeblikket, skal du blot bruge kommandoen **Get-Command**. Denne kommando viser en overskuelig liste over alle mulige handlinger og giver en kortfattet forklaring på hver enkelt cmdlet. Dette gælder også, selvom du har installeret yderligere moduler.

```shell
Get-Command
```

### 3. Få hjælp

Listen over Get-Command-kommandoer, der er beskrevet ovenfor, giver et indledende overblik. Hvis du ønsker mere detaljerede oplysninger om en kommando og dens indstillinger, skal du bruge cmdlet’et **Get-Help**. Denne kommando henter hjælpefilerne på din pc og viser derefter alle tilgængelige oplysninger. For at aktivere den skal du kombinere Get-Help med den kommando, hvis syntaks du ønsker at se.

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

### 4. Get-Process

Hvis du hurtigt vil se en liste over de programmer, applikationer og processer, der i øjeblikket kører på dit system, kan du bruge kommandoen **Get-Process**. Hvis du angiver et bestemt program, får du yderligere oplysninger om netop det program.

```shell
Get-Process
```

### 5. Get-Service

Kommandoen **Get-Service** fungerer på samme måde som cmdlet’en Get-Process. Den adskiller sig dog ved at give oplysninger om alle aktive tjenester. Hvis du ønsker at få oplysninger om en bestemt tjeneste eller en bestemt kategori af tjenester, kan du nemt præcisere din forespørgsel.

```shell
Get-Service
```

### 6. Stop proces

Du kan også bruge forskellige PowerShell-kommandoer til at stoppe processer via kommandolinjen. En mulighed er kommandoen **Stop-Process**. Du angiver den pågældende proces ved hjælp af navn, ID eller andre attributter. Her er et eksempel:

```shell
Stop-Process -Name "processname"
```

```shell
Stop-Process -Id 3582 -Confirm -PassThru
```

Med -Confirm anmodes der om bekræftelse af kommandoen. Kommandoen -PassThru anmoder om bekræftelse af den stoppede proces. Dette sker ikke automatisk.

### 7. Konverter til HTML

For hurtigt at kunne identificere problemer eller potentielle komplikationer er det en stor fordel at have et overskueligt overblik. Dette kan du opnå ved at bruge kommandoen **ConvertTo-HTML**, som konverterer output fra dine PowerShell-kommandoer til en HTML-fil. Her vises oplysningerne i et brugervenligt kolonneformat. Kommandostrukturen ser typisk sådan ud:

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

### 8. ConvertTo-Xml

Du kan gøre på samme måde, hvis du har brug for en XML-baseret repræsentation af et bestemt objekt. Det kan du gøre ved hjælp af kommandoen **ConvertTo-Xml**. I det følgende eksempel konverterer du den aktuelle dato til XML-format:

```shell
Get-Date | ConvertTo-Xml
```

### 9. Hvor-objekt

Du kan bruge kommandoen **Where-Object** til at filtrere resultatet af en cmdlet. Når du udfører en kommando, får du ofte retur en lang række objekter, der indeholder flere oplysninger, end du har brug for. Ved at bruge Where-Object sammen med en pipe kan du nøjes med at vise netop de oplysninger, 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:

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

### 10. Vis historik

Hvis du vil se en liste over alle de PowerShell-kommandoer, du har indtastet under en session, er **Get-History** det rette cmdlet. Sådan viser du en liste over alle PowerShell-kommandoer:

```shell
Get-History
```

Med denne indstilling hentes kun de sidste ti PowerShell-kommandoer:

```shell
Get-History -Count 10
```

### 11. Ryd historik

Du kan også slette listen over anvendte PowerShell-kommandoer. For at fjerne alle poster skal du bruge cmdlet’et **Clear-History**:

```shell
Clear-History
```

For at slette udvalgte PowerShell-kommandoer skal du blot tilføje de relevante parametre. Følgende indtastning fjerner alle PowerShell-kommandoer, der indeholder ordet »Help« eller slutter med »Syntax«.

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

### 12. Tilføj historik

Det er også muligt at gemme PowerShell-kommandoer i en session. På den måde kan du hente dem frem igen senere. Den relevante cmdlet hedder **Add-History**.

```shell
Add-History
```

### 13. Out-File

Hvis du vil gemme resultatet af dine PowerShell-kommandoer på din computer, skal du bruge cmdlet’en **Out-File**. Dette gemmer PowerShell-kommandoerne i en almindelig tekstfil under den angivne sti.

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

### 14. Kopier-element

I PowerShell kan du også kopiere elementer og gemme kopien et andet sted. Brug kommandoen **Copy-Item**, og angiv det bibliotek, hvor kopien skal gemmes. Det foregår på følgende måde:

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

### 15. Get-ChildItem

Du kan bruge kommandoen **Get-ChildItem** til at hente elementer fra et eller flere lagringssteder. Hvis der er underelementer, vises disse også. Denne kommando viser som standard attributter, tidsstemplet for den seneste ændring, filstørrelsen og elementets navn. Hvis et lagringssted er tomt, vises der ingen resultater.

```shell
Get-ChildItem -Path C:\example
```

Egenskaberne vises under linjen »Mode«. Følgende egenskaber er almindelige:

- a (arkiv)
- d (mappe)
- h (skjult)
- l (link)
- r (skrivebeskyttet)
- s (system)

### 16. Indstil-Authenticode-signatur

For at beskytte dine filer kan du forsyne dem med en Authenticode-signatur ved hjælp af kommandoen **Set-AuthenticodeSignature**. Dette fungerer dog kun for filer, der understøtter Subject Interface Package (SIP).

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

### 17. Invoke-Item

**Invoke-Item** er den nemmeste måde at udføre den standardhandling, der er knyttet til en bestemt fil. Denne kommando sikrer for eksempel, at en eksekverbar fil køres direkte, eller at en dokumentfil åbnes i standardprogrammet. I dette eksempel åbnes filen som standard i Microsoft Word:

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

### 18. Start-Job

For at starte en baggrundsopgave 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 baggrunden uden at forstyrre den aktuelle session.

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

## Udfør handlinger med disse PowerShell-kommandoer

Mens de tidligere PowerShell-kommandoer primært havde til formål at give et overblik, kan du også udføre forskellige handlinger ved hjælp af de relevante cmdlets og dermed øge systemets produktivitet. Følgende PowerShell-kommandoer strømliner dit arbejdsforløb.

### 19. Ryd indhold

Hvis man vil slette indholdet af et element uden at fjerne selve elementet, er kommandoen **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:

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

### 20. ForEach-Object

Med kommandoen **ForEach-Object** kan du udføre en handling på alle elementer i en samling af inputobjekter. I dette eksempel dividerer vi tre heltal i en matrix med 10:

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

### 21. Sammenlign-objekt

For at undgå manuel sammenligning af forskellige sæt objekter kan du bruge cmdlet’en **Compare-Object**. Denne kommando genererer en rapport, der fremhæver forskellene mellem posterne. Den første post fungerer som referenceobjekt, og den anden post som forskelsobjekt. Du kan angive, hvilke faktorer der skal sammenlignes, og hvis disse oplysninger udelades, sammenlignes kun strengresultaterne. Outputtet er opdelt i egenskaber, der kun forekommer i referenceobjektet (&lt;), og egenskaber, der kun forekommer i forskelsobjektet (&gt;). I dette eksempel indeholder document1.txt værdierne Berlin, London og Paris. Document2.txt indeholder Berlin, Wien og Amsterdam.

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

Indhold, der forekommer i begge dokumenter (i dette tilfælde »Berlin«), vises ikke som standard.

### 22. Nyt objekt

En af de mest nyttige PowerShell-kommandoer 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 konstruktørstreng, udføres kommandoen som følger:

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

### 23. Select-Object

Brug kommandoen **Select-Object** til at vælge et objekt eller en gruppe af objekter, der har de egenskaber, du har defineret. Du kan angive følgende parametre:

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

I det følgende eksempel bruger vi PowerShell-kommandoerne Get-Process og Sort-Object til at vise de tre processer, der bruger mest hukommelse på det tidspunkt, hvor kommandoen udføres.

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

### 24. Opret alias

Windows-genveje er nyttige til at udføre handlinger endnu hurtigere. PowerShell tilbyder også denne mulighed. Du kan bruge cmdlet’et **Set-Alias** til at definere en genvej til forskellige PowerShell-kommandoer. I det følgende eksempel opretter vi aliaset »ci« til kommandoen Get-ChildItem for den aktuelle session.

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

### 25. Set-Location

Brug kommandoen **Set-Location** til at ændre placeringen af arbejdshukommelsen. Mulige nye placeringer er mapper, undermapper, registreringsdatabaseplaceringer eller udbyderstier. I det følgende eksempel angiver vi drevet C: som den aktuelle lagringsplacering:

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

### 26. Indstilling af service

Du kan bruge cmdlet’et **Set-Service** til at interagere med en tjeneste og starte, stoppe eller sætte den på pause. Det er også muligt at ændre tjenestens egenskaber. I det følgende eksempel ændrer vi visningsnavnet på en tjeneste fra »New Workstation« til »Old Workstation«.

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

### 27. Indstil tidszone

Hvis du vil ændre systemets tidszone, er kommandoen **Set-TimeZone** det rette valg. Brug denne kommando for at indstille den koordinerede universelle tid som den nye systemtid:

```shell
Set-TimeZone -Id "UTC"
```

### 28. Genstart computeren

Du kan genstarte operativsystemet på din lokale computer eller en fjerncomputer ved hjælp af den relevante PowerShell-kommando, der hedder **Restart-Computer**. Den udføres på følgende måde:

For din lokale computer:

```shell
Restart-Computer
```

For udvalgte computere i dit netværk:

```shell
Restart-Computer -ComputerName Server01, Server03
```

### 29. Genstart tjeneste

Hvis du vil stoppe og genstarte en tjeneste ved hjælp af PowerShell-kommandoer, er **Restart-Service** det rette cmdlet. Du kan f.eks. genstarte alle tjenester, der begynder med »Net«:

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

### 30. Tøm papirkurven

Papirkurven bør tømmes regelmæssigt, hvilket også kan gøres via PowerShell. Kommandoen hedder **Clear-RecycleBin**.

```shell
Clear-RecycleBin
```

### 31. Get-ComputerInfo

Kommandoen **Get-ComputerInfo** bruges til at hente oplysninger om systemet og operativsystemet.

```shell
Get-ComputerInfo
```

### 32. Flyt-element

Når du skal flytte et element fra et sted til et andet, har du flere PowerShell-kommandoer 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.

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

## Overvågning og fejlfinding ved hjælp af de relevante PowerShell-kommandoer

PowerShell-kommandoer, der gør det muligt at overvåge og kontrollere systemet, er særdeles værdifulde, især når man tester et nyt netværks ydeevne under realistiske forhold. Følgende PowerShell-kommandoer er særligt nyttige til disse formål.

### 33. Fejlfindingsproces

Fejlfinding er en vigtig proces, der sikrer, at alle indstillinger og processer kører uden fejl. For at gøre dette skal du downloade og konfigurere de relevante fejlfindingsværktøjer. Når dette er gjort, skal du bruge kommandoen **Debug-Process**. I det følgende eksempel bruger vi et fejlfindingsværktøj til Explorer:

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

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

### 34. Aktivér-PSBreakpoint

For at aktivere bestemte breakpoints skal du bruge kommandoen **Enable-PSBreakpoint**. Dette indstiller cmdletten til værdien »true« rent teknisk set. Brug disse PowerShell-kommandoer til at aktivere alle breakpoints i den aktuelle session:

```shell
Get-PSBreakpoint | Enable-PSBreakpoint
```

Brug denne kommando til at aktivere breakpoints ved hjælp af deres ID:

```shell
Enable-PSBreakpoint -ID 0, 3, 4
```

### 35. Deaktiver-PSBreakpoint

Hvis du vil deaktivere PowerShell-breakpoints igen, skal du bruge cmdlet’en **Disable-PSBreakpoint**. Teknisk set sættes værdien for kommandoen Enable-PSBreakpoint til »false«. For at deaktivere et breakpoint med ID 0 skal du indtaste følgende:

```shell
Disable-PSBreakpoint -Id 0
```

### 36. Get-Counter

På Windows-enheder kan du hente ydelsesdata ved hjælp af PowerShell. Den relevante kommando til denne opgave er **Get-Counter**, som kan bruges til både din lokale computer og fjerncomputere. I det følgende eksempel henter vi data fra den lokale computer:

```shell
Get-Counter -ListSet *
```

### 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 overbelastet. PowerShell har kommandoen **Start-Sleep** til dette formål, hvor du kan angive, hvor længe aktiviteterne skal sættes på pause. I det følgende eksempel sættes udførelsen på pause i to sekunder:

```shell
Start-Sleep -Seconds 2
```

### 38. Test-Path

Brug kommandoen **Test-Path** til at kontrollere, om alle elementer i en bestemt sti er til stede. De mulige resultater er »True« eller »False«.

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

### 39. Testforbindelse

Du kan også kontrollere netværksforbindelsen i dit netværk ved hjælp af PowerShell. Dette gøres ved at sende ICMP-ekkoanmodningspakker til bestemte modtagere via kommandoen **Test-Connection**, som anmoder om svar via Internet Control Message Protocol (ICMP). I vores eksempel sender vi en anmodning til Server02 via IPv6-protokollen.

```shell
Test-Connection -TargetName Server02 -IPv6
```

### 40. Get-WinEvent

Når du skal se en eller flere hændelseslogfiler, har du adskillige PowerShell-kommandoer 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:

```shell
Get-WinEvent -ListLog *
```


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/server/konfiguration/powershell-kommandoer/](https://www.ionos.com/da-dk/digitalguide/server/konfiguration/powershell-kommandoer/) for AI/LLM consumption.