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.
Get-Module -Allshell2. 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.
Get-Commandshell3. 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.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]shell4. 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.
Get-Processshell5. 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.
Get-Serviceshell6. 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:
Stop-Process -Name "processname"shellStop-Process -Id 3582 -Confirm -PassThrushellMed -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:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.htmlshell8. 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:
Get-Date | ConvertTo-Xmlshell9. 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:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }shell10. 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:
Get-HistoryshellMed denne indstilling hentes kun de sidste ti PowerShell-kommandoer:
Get-History -Count 10shell11. Ryd historik
Du kan også slette listen over anvendte PowerShell-kommandoer. For at fjerne alle poster skal du bruge cmdlet’et Clear-History:
Clear-HistoryshellFor 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«.
Clear-History -Command *Help*, *Syntaxshell12. 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.
Add-Historyshell13. 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.
Get-Process | Out-File -FilePath .\Process.txtshell14. 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:
Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"shell15. 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.
Get-ChildItem -Path C:\exampleshellEgenskaberne 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).
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $certshell17. 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:
Invoke-Item "C:\Test\example.doc"shell18. 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.
Start-Job -ScriptBlock { Get-Process -Name pwsh }shellUdfø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:
Clear-Content C:\Temp\example.txtshell20. 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:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10shell21. 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 (<), og egenskaber, der kun forekommer i forskelsobjektet (>). I dette eksempel indeholder document1.txt værdierne Berlin, London og Paris. Document2.txt indeholder 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 <==shellIndhold, 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:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"shell23. 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.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3shell24. 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.
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name cishell25. 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:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>shell26. 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«.
Set-Service -Name New Workstation -DisplayName "Old Workstation"shell27. 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:
Set-TimeZone -Id "UTC"shell28. 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:
Restart-ComputershellFor udvalgte computere i dit netværk:
Restart-Computer -ComputerName Server01, Server03shell29. 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«:
PS C:\> Restart-Service -DisplayName "net*"shell30. Tøm papirkurven
Papirkurven bør tømmes regelmæssigt, hvilket også kan gøres via PowerShell. Kommandoen hedder Clear-RecycleBin.
Clear-RecycleBinshell31. Get-ComputerInfo
Kommandoen Get-ComputerInfo bruges til at hente oplysninger om systemet og operativsystemet.
Get-ComputerInfoshell32. 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.
Move-Item -Path C:\old.txt -Destination D:\Temp\new.txtshellOvervå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:
PS C:\> Debug-Process -Name "Explorer"shellHvis 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:
Get-PSBreakpoint | Enable-PSBreakpointshellBrug denne kommando til at aktivere breakpoints ved hjælp af deres ID:
Enable-PSBreakpoint -ID 0, 3, 4shell35. 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:
Disable-PSBreakpoint -Id 0shell36. 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:
Get-Counter -ListSet *shell37. 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:
Start-Sleep -Seconds 2shell38. 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«.
Test-Path -Path "C:\Documents and Settings\user"
Falseshell39. 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.
Test-Connection -TargetName Server02 -IPv6shell40. 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:
Get-WinEvent -ListLog *shell