Hva er PowerShell-kommandoer? De 40 viktigste kommandoene på et øyeblikk
Ved å bruke de riktige PowerShell-kommandoene kan du utnytte modulene på en presis måte. Disse oversiktlige cmdletene kan tilpasses ytterligere ved hjelp av valgfrie parametere. Vi presenterer de 40 viktigste PowerShell-kommandoene, slik at du kan arbeide optimalt i systemet eller nettverket ditt.
Hva er en PowerShell-kommando?
PowerShell, som har vært forhåndsinstallert siden Windows 7, lar deg skrive inn PowerShell-kommandoer som deretter utføres av Windows. I tillegg til cmd-kommandoene i kommandolinjen finnes det en rekke andre kommandoer eller cmdlets som kun forstås av PowerShell selv. Disse cmdlets består av et verb og et substantiv, adskilt av en bindestrek. I tillegg kan du utvide disse PowerShell-kommandoene med valgfrie parametere, adskilt av mellomrom. PowerShells nytteverdi strekker seg utover administratorer; det viser seg også å være uvurderlig innen utvikling. Med en mengde forhåndsinstallerte PowerShell-kommandoer tilgjengelig, gjør vi deg kjent med de viktigste.
De viktigste PowerShell-kommandoene
Med PowerShell-kommandoer kan du utføre omfattende administratoroppgaver med bare noen få kommandoer. Blant de grunnleggende kommandoene du sannsynligvis vil bruke oftest, er de som gir en innledende oversikt over nettverksstrukturen, viser en liste over andre PowerShell-kommandoer, hjelper deg med viktige sikkerhetskonfigurasjoner og muliggjør nyttige analyser. Her er noen av de viktigste PowerShell-kommandoene du bør kjenne til:
1. Get-Module -All
For å få en første oversikt over alle importerte PowerShell-moduler, bruker du kommandoen Get-Module -All.
Get-Module -Allshell2. Get-Command
Det finnes en rekke forhåndsdefinerte PowerShell-kommandoer. For å få oversikt over de tilgjengelige PowerShell-kommandoene, bruker du ganske enkelt kommandoen Get-Command. Denne kommandoen viser en oversiktlig liste over alle mulige handlinger og gir korte forklaringer på hver enkelt cmdlet. Dette gjelder også selv om du har installert tilleggsmoduler.
Get-Commandshell3. Få hjelp
Listen over Get-kommandoer beskrevet ovenfor gir en innledende oversikt. For mer detaljert informasjon om en kommando og dens alternativer, bruk cmdlet-en Get-Help. Denne kommandoen henter hjelpefilene på PC-en din og viser deretter all tilgjengelig informasjon. For å aktivere den, kombinerer du Get-Help med kommandoen du ønsker å se syntaksen til.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]shell4. Get-Process
For å raskt sjekke listen over applikasjoner, programmer og prosesser som for øyeblikket kjører på systemet ditt, kan du bruke kommandoen Get-Process. Hvis du angir en bestemt applikasjon, får du ytterligere informasjon om akkurat den applikasjonen.
Get-Processshell5. Get-Service
Kommandoen Get-Service fungerer på samme måte som cmdlet-en Get-Process. Den skiller seg imidlertid ut ved å gi informasjon om alle aktive tjenester. Hvis du ønsker å få informasjon om en bestemt tjeneste eller en bestemt kategori av tjenester, kan du enkelt spesifisere forespørselen din.
Get-Serviceshell6. Stopp prosess
Du kan også bruke ulike PowerShell-kommandoer til å stoppe prosesser via kommandolinjen. En mulighet er kommandoen Stop-Process. Du angir den aktuelle prosessen ved hjelp av navn, ID eller andre attributter. Her er et eksempel:
Stop-Process -Name "processname"shellStop-Process -Id 3582 -Confirm -PassThrushellMed -Confirm blir det bedt om bekreftelse av kommandoen. Kommandoen -PassThru ber om bekreftelse av den stoppede prosessen. Dette skjer ikke automatisk.
7. Konverter til HTML
For å raskt kunne oppdage problemer eller potensielle komplikasjoner er det svært nyttig å ha en oversiktlig visning. Dette oppnår du ved å bruke kommandoen ConvertTo-HTML, som konverterer utdataene fra PowerShell-kommandoene dine til en HTML-fil. Dette presenterer informasjonen i et brukervennlig kolonneformat. Kommandostrukturen ser vanligvis slik ut:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.htmlshell8. ConvertTo-Xml
Du kan gå frem på samme måte hvis du trenger en XML-basert representasjon av et bestemt objekt. Dette gjør du ved hjelp av kommandoen ConvertTo-Xml. I eksemplet nedenfor konverterer du dagens dato til XML-format:
Get-Date | ConvertTo-Xmlshell9. Hvor-objekt
Du kan bruke kommandoen Where-Object til å filtrere resultatet av en cmdlet. Når du kjører en kommando, får du ofte mange objekter som inneholder mer informasjon enn du trenger. Ved å bruke Where-Object sammen med en pipe kan du vise bare den spesifikke informasjonen du er ute etter. Hvis du for eksempel vil se tjenester som er opprettet eller oppdatert i år, kan du gjøre det på følgende måte:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }shell10. Vis historikk
Hvis du vil vise alle PowerShell-kommandoer du har skrevet inn i løpet av en økt, er Get-History det rette cmdletet. Slik viser du alle PowerShell-kommandoer:
Get-HistoryshellMed denne spesifikasjonen henter du bare de ti siste PowerShell-kommandoene:
Get-History -Count 10shell11. Slett historikk
Du kan også slette listen over brukte PowerShell-kommandoer. For å fjerne alle oppføringene bruker du cmdlet-kommandoen Clear-History:
Clear-HistoryshellFor å slette bestemte PowerShell-kommandoer, legger du bare til de aktuelle parametrene. Følgende innspill fjerner alle PowerShell-kommandoer som inneholder «Help» eller slutter på «Syntax».
Clear-History -Command *Help*, *Syntaxshell12. Legg til historikk
Det er også mulig å legge til PowerShell-kommandoer i en økt. På den måten kan du hente dem frem igjen senere. Kommandoen som brukes til dette, er Add-History.
Add-Historyshell13. Ut-fil
Hvis du vil lagre utdataene fra PowerShell-kommandoene dine på datamaskinen, bruker du cmdlet-en Out-File. Dette lagrer PowerShell-kommandoene i en ren tekstfil under den angitte banen.
Get-Process | Out-File -FilePath .\Process.txtshell14. Kopier element
I PowerShell kan du også kopiere elementer og lagre kopien på et annet sted. Bruk kommandoen Copy-Item og angi mappen der kopien skal lagres. Dette gjøres på følgende måte:
Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"shell15. Get-ChildItem
Du kan bruke kommandoen Get-ChildItem til å hente elementer fra ett eller flere lagringssteder. Hvis det finnes underelementer, vises også disse. Denne kommandoen viser som standard attributter, tidsstempelet for den siste endringen, filstørrelsen og elementets navn. Hvis et lagringssted er tomt, utelates utdataene.
Get-ChildItem -Path C:\exampleshellEgenskapene vises under «Mode»-linjen. Følgende egenskaper er vanlige:
- a (arkiv)
- d (katalog)
- h (skjult)
- l (lenke)
- r (skrivebeskyttet)
- s (system)
16. Angi Authenticode-signatur
For å beskytte filene dine kan du utstyre dem med en Authenticode-signatur ved hjelp av kommandoen Set-AuthenticodeSignature. Dette fungerer imidlertid bare for filer som stø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 enkleste måten å utføre standardhandlingen for en bestemt fil på. Denne kommandoen sørger for eksempel for at en kjørbar fil kjøres direkte, eller at en dokumentfil åpnes i standardprogrammet. I dette eksemplet åpnes filen som standard i Microsoft Word:
Invoke-Item "C:\Test\example.doc"shell18. Start jobb
For å starte en bakgrunnsoppgave på din lokale datamaskin kan du bruke den aktuelle kommandoen. Med Start-Job kan du kjøre en bestemt kommando i bakgrunnen uten å forstyrre den aktuelle økten.
Start-Job -ScriptBlock { Get-Process -Name pwsh }shellUtfør handlinger med disse PowerShell-kommandoene
Mens de tidligere PowerShell-kommandoene hovedsakelig var rettet mot å gi oversikter, kan du også utføre ulike handlinger ved hjelp av de aktuelle cmdletene, og dermed øke systemets produktivitet. Følgende PowerShell-kommandoer effektiviserer arbeidsflyten din.
19. Slett innhold
For å slette innholdet i et element uten å fjerne selve elementet, er kommandoen Clear-Content det beste valget. Et eksempel på bruken av denne kommandoen er å fjerne teksten fra et dokument uten å endre selve filen. Prosessen utføres på følgende måte:
Clear-Content C:\Temp\example.txtshell20. ForEach-Object
Kommandoen ForEach-Object lar deg utføre en operasjon på alle elementene i en samling av inndataobjekter. I dette eksemplet deler vi tre heltall i en matrise med 10:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10shell21. Sammenlign-Objekt
For å unngå manuell sammenligning av ulike sett med objekter, kan du bruke cmdlet-kommandoen Compare-Object. Denne kommandoen genererer en rapport som fremhever forskjellene mellom postene. Den første posten fungerer som referanseobjekt, og den andre posten som forskjellsobjekt. Du kan angi hvilke faktorer som skal sammenlignes, og hvis denne informasjonen utelates, vil kun strengresultatene bli sammenlignet. Utdataene er delt inn i egenskaper som bare finnes i referanseobjektet (<) og egenskaper som bare finnes i forskjellsobjektet (>). I dette eksemplet inneholder document1.txt verdiene Berlin, London og Paris. Document2.txt inneholder 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 <==shellInnhold som forekommer i begge dokumentene (i dette tilfellet «Berlin») vises ikke som standard.
22. Nytt objekt
En av de mest nyttige PowerShell-kommandoene er New-Object. Du kan bruke denne cmdletten til å opprette en instans av et objekt fra .NET Framework eller Component Object Model (COM). Hvis du for eksempel ønsker å opprette et System.Version-objekt med «1.2.3.4» som konstruktorstreng, utføres kommandoen slik:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"shell23. Select-Object
Bruk kommandoen Select-Object til å velge et objekt eller en gruppe objekter som har de egenskapene du har definert. Du kan angi følgende parametere:
- Først
- Siste
- Unikt
- Hopp over
- Indeks
I det følgende eksemplet bruker vi PowerShell-kommandoene Get-Process og Sort-Object til å vise de tre prosessene som bruker mest minne på det tidspunktet kommandoen utføres.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3shell24. Opprett alias
Windows-hurtigtaster er nyttige for å utføre handlinger enda raskere. PowerShell tilbyr også denne muligheten. Du kan bruke cmdlet-en Set-Alias til å definere en hurtigtast for ulike PowerShell-kommandoer. I eksemplet nedenfor oppretter vi aliaset «ci» for kommandoen Get-ChildItem for den aktuelle økten.
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name cishell25. Set-Location
For å endre plasseringen av arbeidsminnet bruker du kommandoen Set-Location. Mulige nye plasseringer er kataloger, underkataloger, registerplasseringer eller leverandørstier. I følgende eksempel angir vi C:-stasjonen som gjeldende lagringsplassering:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>shell26. Innstillings- og vedlikeholdstjeneste
Du kan bruke cmdlet-kommandoen Set-Service til å kommunisere med en tjeneste og starte, stoppe eller sette den på pause. Det er også mulig å endre tjenestens egenskaper. I eksemplet nedenfor endrer vi visningsnavnet til en tjeneste fra «New Workstation» til «Old Workstation».
Set-Service -Name New Workstation -DisplayName "Old Workstation"shell27. Angi tidssone
Hvis du vil endre tidssonen på systemet ditt, er kommandoen Set-TimeZone det riktige valget. Bruk denne kommandoen for å angi koordinert universaltid som ny systemtid:
Set-TimeZone -Id "UTC"shell28. Start datamaskinen på nytt
Du kan starte operativsystemet på nytt på din lokale datamaskin eller en ekstern datamaskin ved hjelp av den aktuelle PowerShell-kommandoen Restart-Computer. Den kan kjøres på følgende måte:
For din lokale datamaskin:
Restart-ComputershellFor utvalgte datamaskiner i nettverket ditt:
Restart-Computer -ComputerName Server01, Server03shell29. Start tjenesten på nytt
For å stoppe og starte en tjeneste på nytt ved hjelp av PowerShell-kommandoer, er Restart-Service det riktige cmdletet. Du kan for eksempel starte alle tjenester som begynner med «Net» på nytt:
PS C:\> Restart-Service -DisplayName "net*"shell30. Tøm papirkurven
Papirkurven bør tømmes regelmessig, noe som også kan gjøres via PowerShell. Kommandoen er Clear-RecycleBin.
Clear-RecycleBinshell31. Get-ComputerInfo
Kommandoen Get-ComputerInfo brukes til å hente informasjon om system- og operativsystemegenskaper.
Get-ComputerInfoshell32. Flytt element
Når du trenger å flytte et element fra ett sted til et annet, har du flere PowerShell-kommandoer til rådighet. Det mest brukte alternativet er imidlertid Move-Item. I dette eksemplet flytter vi filen old.txt fra C:-stasjonen til katalogen D:\Temp, samtidig som vi gir den nytt navn til new.txt.
Move-Item -Path C:\old.txt -Destination D:\Temp\new.txtshellOvervåking og feilsøking ved hjelp av de riktige PowerShell-kommandoene
PowerShell-kommandoer som muliggjør systemovervåking og -kontroll, er svært verdifulle, særlig når man skal teste ytelsen til et nytt nettverk under realistiske forhold. Følgende PowerShell-kommandoer er spesielt nyttige til dette formålet.
33. Feilsøkingsprosess
Feilsøking er en viktig prosess for å sikre at alle innstillinger og prosesser kjører feilfritt. For å gjøre dette må du laste ned og konfigurere de aktuelle feilsøkingsprogrammene. Når dette er gjort, bruker du kommandoen Debug-Process. I følgende eksempel bruker vi et feilsøkingsprogram for Explorer:
PS C:\> Debug-Process -Name "Explorer"shellFor å feilsøke flere prosesser samtidig, skiller du dem ganske enkelt med komma.
34. Aktiver-PSBreakpoint
For å aktivere bestemte stoppunkter bruker du kommandoen Enable-PSBreakpoint. Dette setter cmdlet-verdien til «true» fra et teknisk perspektiv. Bruk disse PowerShell-kommandoene for å aktivere alle stoppunkter i den aktuelle økten:
Get-PSBreakpoint | Enable-PSBreakpointshellBruk denne kommandoen til å aktivere stoppunkter ved hjelp av deres ID:
Enable-PSBreakpoint -ID 0, 3, 4shell35. Deaktiver-PSBreakpoint
For å deaktivere PowerShell-brytpunkter igjen, er cmdlet-kommandoen Disable-PSBreakpoint egnet til dette formålet. Teknisk sett settes verdien for kommandoen Enable-PSBreakpoint til «false». For å deaktivere et brytpunkt med ID 0, skriver du inn følgende:
Disable-PSBreakpoint -Id 0shell36. Get-Counter
For Windows-enheter kan du hente ytelsesdata ved hjelp av PowerShell. Kommandoen som egner seg til denne oppgaven er Get-Counter, som kan brukes både på din lokale datamaskin og på eksterne datamaskiner. I eksemplet nedenfor henter vi data fra den lokale datamaskinen:
Get-Counter -ListSet *shell37. Start-Søvn
Det kan være avgjørende å sette et skript eller en økt på pause, særlig når systemet er overbelastet. PowerShell har kommandoen Start-Sleep til dette formålet, som lar deg angi hvor lenge aktivitetene skal settes på pause. I eksemplet nedenfor settes utførelsen på pause i to sekunder:
Start-Sleep -Seconds 2shell38. Test-Path
Bruk kommandoen Test-Path til å sjekke om alle elementene i en bestemt bane er til stede. De mulige resultatene er «True» eller «False».
Test-Path -Path "C:\Documents and Settings\user"
Falseshell39. Test tilkobling
Du kan også vurdere nettverkstilkoblingen i nettverket ditt ved hjelp av PowerShell. Dette gjøres ved å sende ICMP-ekkoforespørselspakker til angitte mottakere via kommandoen Test-Connection, som ber om svar via ICMP (Internet Control Message Protocol). I vårt eksempel sender vi en forespørsel til Server02 via IPv6-protokollen.
Test-Connection -TargetName Server02 -IPv6shell40. Get-WinEvent
Når du trenger å se på en eller flere hendelseslogger, har du flere PowerShell-kommandoer til rådighet. Den mest praktiske cmdlet-en til dette formålet er Get-WinEvent. For å hente alle loggene fra den lokale datamaskinen din, kan du bruke følgende kommando:
Get-WinEvent -ListLog *shell