Vad är PowerShell-kommandon? De 40 viktigaste kommandona i korthet
Genom att använda lämpliga PowerShell-kommandon kan du använda moduler med precision. Dessa välorganiserade cmdlets kan anpassas ytterligare med hjälp av valfria parametrar. Vi presenterar de 40 viktigaste PowerShell-kommandona så att du kan arbeta optimalt i ditt system eller nätverk.
Vad är ett PowerShell-kommando?
PowerShell, som är förinstallerat sedan Windows 7, låter dig skriva in PowerShell-kommandon som sedan körs av Windows. Förutom kommandoradens cmd-kommandon finns det många andra kommandon eller cmdlets som bara kan förstås av PowerShell själv. Dessa cmdlets består av ett verb och ett substantiv, som är åtskilda med ett bindestreck. Dessutom kan du förbättra dessa PowerShell-kommandon med valfria parametrar, åtskilda med mellanslag. PowerShells användbarhet sträcker sig bortom administratörer; det är också ovärderligt inom utvecklingsområdet. Med en uppsjö av förinstallerade PowerShell-kommandon tillgängliga, gör vi dig bekant med de viktigaste.
De viktigaste PowerShell-kommandona
Med PowerShell-kommandon kan du utföra omfattande administrativa uppgifter med bara några få inmatningar. Bland de grundläggande kommandon som du troligen kommer att använda oftast finns de som ger en initial översikt över nätverkets struktur, listar andra PowerShell-kommandon, hjälper till med viktiga säkerhetskonfigurationer och möjliggör värdefulla analyser. Här är några av de viktigaste PowerShell-kommandona som du bör känna till:
1. Get-Module -All
För att få en första översikt över alla importerade PowerShell-moduler använder du kommandot Get-Module -All.
Get-Module -Allshell2. Get-Command
Det finns ett stort antal fördefinierade PowerShell-kommandon. För att få en översikt över de PowerShell-kommandon som för närvarande är tillgängliga använder du helt enkelt kommandot Get-Command. Detta kommando listar alla möjliga åtgärder och ger kortfattade förklaringar till respektive cmdlet. Detta gäller även om du har installerat ytterligare moduler.
Get-Commandshell3. Get-Help
Listan Get-Command som beskrivs ovan ger en första översikt. För mer detaljerad information om ett kommando och dess alternativ använder du cmdlet Get-Help. Detta kommando öppnar hjälpfilerna på din dator och visar all tillgänglig information. För att aktivera det kombinerar 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>]shell4. Get-Process
För att snabbt kontrollera listan över aktiva applikationer, program och processer på ditt system kan du använda kommandot Get-Process. Om du anger en viss applikation får du ytterligare information om just den applikationen.
Get-Processshell5. Get-Service
Kommandot Get-Service fungerar på samma sätt som cmdlet Get-Process. Det skiljer sig dock genom att det ger information om alla aktiva tjänster. Om du vill få information om en viss tjänst eller en specifik kategori av tjänster kan du enkelt specificera din begäran.
Get-Serviceshell6. Stoppa processen
Du kan också använda olika PowerShell-kommandon för att stoppa processer via skalet. Ett alternativ är kommandot Stop-Process. Du definierar motsvarande process med namn, ID eller andra attribut. Här är ett exempel:
Stop-Process -Name "processname"shellStop-Process -Id 3582 -Confirm -PassThrushellEn bekräftelse av kommandot begärs med -Confirm. Kommandot -PassThru begär bekräftelse av den stoppade processen. Detta görs inte automatiskt.
7. Konvertera till HTML
För att snabbt kunna identifiera problem eller potentiella komplikationer är det oerhört fördelaktigt att ha en tydlig visning. Du kan uppnå detta genom att använda kommandot ConvertTo-HTML, som överför utdata från dina PowerShell-kommandon till en HTML-fil. Detta presenterar informationen i ett användarvänligt kolumnformat. Kommandostrukturen ser vanligtvis ut så här:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.htmlshell8. Konvertera till XML
Du kan göra på liknande sätt om du behöver en XML-baserad representation av ett specifikt objekt. Du kan göra detta med kommandot ConvertTo-Xml. I följande exempel konverterar du det aktuella datumet till XML-format:
Get-Date | ConvertTo-Xmlshell9. Var-Objekt
Du kan använda kommandot Where-Object för att filtrera resultatet av ett cmdlet. När du kör ett kommando får du ofta många objekt som innehåller mer information än du behöver. Genom att använda Where-Object tillsammans med en pipe kan du visa endast den specifika information du söker. Om du till exempel vill visa tjänster som har skapats eller uppdaterats i år kan du göra så här:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }shell10. Get-History
För att lista alla PowerShell-kommandon som du har angett under en session är Get-History rätt cmdlet. Så här listar du alla PowerShell-kommandon:
Get-HistoryshellMed denna specifikation anropar du endast de senaste tio PowerShell-kommandona:
Get-History -Count 10shell11. Rensa historik
Du kan också ta bort listan över använda PowerShell-kommandon. För att ta bort alla poster använder du cmdlet Clear-History:
Clear-HistoryshellFör att ta bort utvalda PowerShell-kommandon lägger du bara till motsvarande parametrar. Följande inmatning tar bort alla PowerShell-kommandon som innehåller “Help” eller slutar med “Syntax”.
Clear-History -Command *Help*, *Syntaxshell12. Lägg till historik
Det är också möjligt att lägga till PowerShell-kommandon till en session. Detta gör att du kan hämta dem igen senare. Det lämpliga cmdlet är Add-History.
Add-Historyshell13. Ut-fil
Om du vill spara utdata från dina PowerShell-kommandon på din dator använder du cmdlet Out-File. Detta lagrar PowerShell-kommandona i en rå textfil under den angivna sökvägen.
Get-Process | Out-File -FilePath .\Process.txtshell14. Kopiera objekt
I PowerShell 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"shell15. Get-ChildItem
Du kan använda kommandot Get-ChildItem för att hämta objekt från en eller flera lagringsplatser. Om det finns underelement visas även dessa. Detta kommando listar attribut, tidsstämpeln för den senaste ändringen, filstorleken och elementets namn som standard. Om en lagringsplats är tom utelämnas utdata.
Get-ChildItem -Path C:\exampleshellAttributen visas under raden “Mode” (Läge). Följande egenskaper är vanliga:
- a (arkiv)
- d (katalog)
- h (dold)
- l (länk)
- r (skrivskyddad)
- s (system)
16. Ställ in autentiseringssignatur
För att skydda dina filer kan du förse dem med en Authenticode-signatur med kommandot Set-AuthenticodeSignature. 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 $certshell17. Anropa-objekt
Invoke-Item är det enklaste sättet att utföra standardåtgärden för en specifik fil. Det här kommandot säkerställer till exempel att en körbar fil körs direkt eller att en dokumentfil öppnas i standardprogrammet. I det här exemplet öppnas filen i Microsoft Word som standard:
Invoke-Item "C:\Test\example.doc"shell18. Start-Job
För att starta ett bakgrundsjobb 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 bakgrunden utan att interagera med den aktuella sessionen.
Start-Job -ScriptBlock { Get-Process -Name pwsh }shellUtför åtgärder med dessa PowerShell-kommandon
Medan de tidigare PowerShell-kommandona främst var inriktade på att ge översikter, kan du också utföra olika åtgärder med hjälp av lämpliga cmdlets, vilket förbättrar systemets produktivitet. Följande PowerShell-kommandon effektiviserar ditt arbetsflöde.
19. Tydligt innehåll
För att radera innehållet i ett element utan att ta bort själva elementet är kommandot Clear-Content det perfekta valet. Ett exempel på dess användning ä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.txtshell20. ForEach-Object
Med kommandot ForEach-Object kan du utföra en operation på alla element i en samling av inmatningsobjekt. I det här exemplet delar vi tre heltal i en matris med 10:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10shell21. Jämför objekt
För att undvika manuell jämförelse av olika uppsättningar objekt kan du använda cmdlet Compare-Object. Detta kommando genererar en rapport som markerar skillnaderna mellan posterna. Den första posten fungerar som referensobjekt och den andra posten som skillnadsobjekt. Du kan ange vilka faktorer som ska jämföras, och om denna information utelämnas kommer endast strängresultaten att jämföras. Utmatningen delas upp i egenskaper som endast förekommer i referensobjektet (<) och egenskaper som endast förekommer i skillnadsobjektet (>). I det här exemplet innehåller document1.txt värdena Berlin, London och Paris. Document2.txt innehåller 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 <==shellInnehåll som förekommer i båda dokumenten (i detta fall ”Berlin”) visas inte som standard.
22. Nytt objekt
Ett av de mest användbara PowerShell-kommandona är New-Object. Du kan använda detta cmdlet för att instansiera 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 konstruktörssträng, körs kommandot enligt följande:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"shell23. Välj objekt
Använd kommandot Select-Object för att välja ett objekt eller en grupp objekt som har de egenskaper du har definierat. Du kan ange följande parametrar för detta:
- Först
- Efternamn
- Unik
- Hoppa
- Index
I följande exempel använder vi PowerShell-kommandona Get-Process och Sort-Object för att visa de tre processerna med högst minnesförbrukning vid tidpunkten för inmatningen.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3shell24. Ställ in alias
Windows-genvägar är användbara för att utföra åtgärder ännu snabbare. PowerShell erbjuder också denna möjlighet. Du kan använda cmdlet Set-Alias för att definiera en genväg för olika PowerShell-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 cishell25. Ställ in plats
För att ändra arbetsminnets plats använder du kommandot Set-Location. Möjliga nya platser är kataloger, underkataloger, registerplatser eller leverantörsvägar. I följande exempel anger vi enheten C: som aktuell lagringsplats:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>shell26. Set-Service
Du kan använda cmdlet Set-Service för att interagera med en tjänst och starta, stoppa eller pausa den. Det är också möjligt att ändra tjänstens egenskaper. I följande exempel ändrar vi visningsnamnet för en tjänst från “Ny arbetsstation” till “Gammal arbetsstation”.
Set-Service -Name New Workstation -DisplayName "Old Workstation"shell27. 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 samordnade universella tiden som ny systemtid använder du detta kommando:
Set-TimeZone -Id "UTC"shell28. Starta om datorn
Du kan starta om operativsystemet på din lokala dator eller en fjärrdator med hjälp av det lämpliga PowerShell-kommandot Restart-Computer. Det kan köras på följande sätt:
För din lokala dator:
Restart-ComputershellFör utvalda datorer i ditt nätverk:
Restart-Computer -ComputerName Server01, Server03shell29. Starta om tjänsten
För att stoppa och starta om en tjänst med PowerShell-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*"shell30. Rensa papperskorgen
Papperskorgen bör tömmas regelbundet, vilket också är möjligt via PowerShell. Kommandot är Clear-RecycleBin.
Clear-RecycleBinshell31. Get-ComputerInfo
Kommandot Get-ComputerInfo används för att hämta system- och operativsystemegenskaper.
Get-ComputerInfoshell32. Flytta objekt
När du behöver flytta ett objekt från en plats till en annan finns det flera PowerShell-kommandon att välja mellan. Det mest använda alternativet ä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.txtshellÖvervakning och felsökning med lämpliga PowerShell-kommandon
PowerShell-kommandon som möjliggör systemövervakning och kontroll är exceptionellt värdefulla, särskilt när man testar ett nytt nätverks prestanda under realistiska förhållanden. Följande PowerShell-kommandon är särskilt användbara för dessa ändamål.
33. Felsökningsprocess
Felsökning är en viktig process för att säkerställa att alla inställningar och processer fungerar utan fel. För att göra detta måste du ladda ner och konfigurera 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"shellFör att felsöka flera processer samtidigt, dela upp dem helt enkelt med kommatecken.
34. Aktivera-PSBreakpoint
För att aktivera vissa brytpunkter använder du kommandot Enable-PSBreakpoint. Detta ställer in värdet för cmdlet till “true” ur ett tekniskt perspektiv. Använd dessa PowerShell-kommandon för att aktivera alla brytpunkter i den aktuella sessionen:
Get-PSBreakpoint | Enable-PSBreakpointshellAnvänd detta kommando för att aktivera brytpunkter med hjälp av deras ID:
Enable-PSBreakpoint -ID 0, 3, 4shell35. Inaktivera PSBreakpoint
För att inaktivera PowerShell-brytpunkter igen använder du kommandot Disable-PSBreakpoint. Tekniskt sett sätts värdet för kommandot Enable-PSBreakpoint till ”false”. För att inaktivera en brytpunkt med ID 0 anger du följande:
Disable-PSBreakpoint -Id 0shell36. Get-Counter
För Windows-enheter kan du hämta prestandadata med hjälp av PowerShell. 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ärrdatorer. I följande exempel hämtar vi data från den lokala datorn:
Get-Counter -ListSet *shell37. Start-Sömn
Att pausa ett skript eller en session kan vara avgörande, särskilt vid överbelastning av systemet. PowerShell har kommandot Start-Sleep för detta ändamål, som gör att du kan ange hur länge aktiviteterna ska pausas. I följande exempel pausas exekveringen i två sekunder:
Start-Sleep -Seconds 2shell38. Test-Path
Använd kommandot Test-Path för att kontrollera om alla element i en viss sökväg finns. De möjliga resultaten är “True” eller “False”.
Test-Path -Path "C:\Documents and Settings\user"
Falseshell39. Testa anslutning
Du kan också utvärdera nätverksanslutningen inom ditt nätverk med hjälp av PowerShell. Detta görs genom att skicka ICMP-ekoförfrågningspaket till angivna mottagare via kommandot Test-Connection, som begär svar via Internet Control Message Protocol (ICMP). I vårt exempel skickar vi en förfrågan till Server02 via IPv6-protokollet.
Test-Connection -TargetName Server02 -IPv6shell40. Get-WinEvent
När du behöver visa en eller flera händelseloggar finns det olika PowerShell-kommandon till ditt förfogande. 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
