PowerShell kode: Guide til scripts og eksempler

Introduktion til PowerShell

PowerShell er en avanceret opgaveautomatiseringsramme og kommandolinjeskal fra Microsoft, bygget på .NET-platformen. Det er designet til at automatisere systemadministrationsopgaver gennem scripts, der kan udføres på tværs af Windows, Linux og macOS. PowerShell kombinerer en traditionel kommandolinjegrænseflade med en kraftfuld scriptingmotor, hvilket gør det muligt for administratorer at styre både lokale og eksterne systemer effektivt. I denne guide får du en grundig introduktion til PowerShell-kode, herunder scripts, cmdlets, pipeliner og praktiske eksempler. Uanset om du er nybegynder eller erfaren, vil du finde værdifuld viden til at optimere dine administrative opgaver.

PowerShell scripts kaldes typisk for .ps1-filer og kan indeholde en bred vifte af kommandoer, der kaldes cmdlets. Hver cmdlet udfører en specifik handling, såsom at hente procesinformation, ændre tjenestestatus eller forespørge Active Directory. En af de største fordele ved PowerShell er dens evne til at håndtere objekter i stedet for ren tekst. Det betyder, at output fra en kommando kan sendes direkte videre til en anden kommando via en pipeline, uden at du mister struktur eller egenskaber. Dette gør scripting mere fleksibelt og mindsker behovet for tekstparsing.

PowerShell kode: Guide til scripts og eksempler - 1

Grundlæggende PowerShell-scripts

Når du begynder at skrive PowerShell-kode, er det vigtigt at forstå nogle grundlæggende elementer. Variable i PowerShell starter med $-tegnet, for eksempel $navn = "Hans". Du kan bruge løkker som for og foreach til at gentage handlinger, og betingelseslogik med if og switch til at træffe beslutninger. Cmdlets følger et verbum-navneformat, for eksempel Get-Process, Set-Location og Stop-Service. Dette konsekvente mønster gør det nemt at gætte kommandoer, når du først kender verberne som Get, Set, New, Remove og Invoke.

For at hente hjælp til en cmdlet kan du bruge Get-Help efterfulgt af cmdlet-navnet. For eksempel giver Get-Help Get-Process en detaljeret beskrivelse, parametre og eksempler. PowerShell inkluderer også aliaser for at forkorte kommandoer, såsom dir i stedet for Get-ChildItem og cls for Clear-Host. Det anbefales at begynde med enkle scripts og gradvist tilføje mere kompleks logik, efterhånden som du bliver fortrolig med syntaksen.

PowerShell kode: Guide til scripts og eksempler - 2

Almindelige cmdlets og deres anvendelse

Her er en liste over nogle af de mest anvendte cmdlets i PowerShell, som dækker systemadministration, Active Directory og generel fejlfinding:

  • Get-Service: Henter status for alle tjenester på en computer, og kan bruges til at starte, stoppe eller genstarte tjenester.
  • Get-Process: Viser aktive processer med oplysninger som CPU-brug, hukommelse og proces-id.
  • Get-EventLog: Læser posteringer fra Windows begivenhedslogfiler, nyttigt til overvågning og fejlfinding.
  • Get-ADUser: Forespørger Active Directory-brugere og returnerer egenskaber som navn, e-mail og kontostatus.
  • Get-ADComputer: Henter computere fra Active Directory, nyttigt til inventarstyring.
  • Set-ExecutionPolicy: Styrer sikkerhedsniveauet for scriptudførelse på en maskine.
  • Test-Connection: Sender ping-anmodninger og tester netværksforbindelse.
  • Invoke-Command: Udfører kommandoer på en eller flere eksterne computere via PowerShell Remoting.

Disse cmdlets udgør kun en brøkdel af det samlede bibliotek, men de dækker daglige administrative opgaver. Du kan kombinere dem i pipelines for at skabe avancerede rapporter. For eksempel kan du hente alle kørende processer og sortere dem efter hukommelsesforbrug med Get-Process | Sort-Object WorkingSet -Descending.

PowerShell kode: Guide til scripts og eksempler - 3

Objektbaseret pipeline og scripting

Pipelinen i PowerShell er fundamentalt anderledes end i traditionelle skaller. I stedet for at sende tekststrenge mellem kommandoer, sender PowerShell objekter af .NET-typer. Det betyder, at egenskaber og metoder bevares gennem kæden. Eksempelvis returnerer Get-Process et sæt System.Diagnostics.Process-objekter. Disse objekter har egenskaber som Name, Id og Responding, som du kan filtrere, sortere eller videregive til andre cmdlets som Where-Object eller Select-Object.

Denne objektbaserede tilgang gør det muligt at arbejde med data uden at skulle parse tekst. For at udtrække specifikke oplysninger kan du bruge Select-Object -Property Name, CPU eller filtrere med Where-Object { $_.CPU -gt 10 }. Scripting bliver mere læseligt og vedligeholdelsesvenligt, fordi du kan bruge .NET-metoder direkte, for eksempel (Get-Date).AddDays(-7) til at beregne datoer.

PowerShell kode: Guide til scripts og eksempler - 4

Eksempel på Active Directory script

Et typisk script i PowerShell kan hente alle Active Directory-brugere, der er oprettet inden for den seneste uge. Koden ser således ud:

$Fecha = (Get-Date).AddDays(-7)
Get-ADUser -Filter {whenCreated -ge $Fecha} -Properties Name, Enabled, whenCreated

PowerShell kode: Guide til scripts og eksempler - 5

Her bruges Get-Date til at få den aktuelle dato, og derefter trækkes syv dage fra. Filteret whenCreated -ge $Fecha sikrer, at kun brugere med en oprettelsesdato større end eller lig med den beregnede dato returneres. Egenskaberne Name, Enabled og whenCreated specificeres for at få de relevante oplysninger. Dette script er nyttigt til at overvåge nye konti i organisationen og kan let udvides til at sende rapporter via e-mail.

Sikkerhed og eksekveringspolitikker

PowerShell har indbyggede sikkerhedsmekanismer, især gennem eksekveringspolitikker, der bestemmer, hvilke scripts der må køre på en computer. Standardpolitikken på Windows er ofte Restricted, hvilket forhindrer udførelse af scripts helt. Du kan ændre denne indstilling med Set-ExecutionPolicy, men det kræver administrative rettigheder. Følgende tabel viser de vigtigste politikker:

EksekveringspolitikBeskrivelse
RestrictedIngen scripts må køre. Kun interaktive kommandoer er tilladt.
RemoteSignedLokalt skrevne scripts kører frit. Scripts downloadet fra internettet skal være signeret af en betroet udgiver.
AllSignedAlle scripts, uanset oprindelse, skal være signeret af en betroet udgiver.
UnrestrictedAlle scripts kan køre, men du bliver bedt om bekræftelse, hvis de kommer fra internettet.
BypassIngen begrænsninger. Scripts kører uden advarsler eller blokering.

Det anbefales at bruge RemoteSigned som en balance mellem sikkerhed og funktionalitet, især i miljøer, hvor du downloader scripts fra betroede kilder. Du kan kontrollere den nuværende politik med Get-ExecutionPolicy. Husk, at politikindstillinger kan være målrettet mod forskellige scopes (MachinePolicy, UserPolicy, Process, CurrentUser, LocalMachine).

PowerShell's historie og udvikling

PowerShell blev oprindeligt udviklet under kodenavnet "Monad" i 2003, og den første officielle version blev frigivet i 2006. I mange år var PowerShell kun tilgængeligt for Windows, men i 2016 åbnede Microsoft kildekoden under MIT-licensen og lancerede PowerShell Core, som kører på Linux og macOS. Dette gjorde PowerShell til en tværplatformsløsning, der kan automatisere opgaver på tværs af forskellige operativsystemer. Den nyeste version, PowerShell 7, bygger videre på .NET Core og inkluderer mange forbedringer i forhold til den klassiske Windows PowerShell 5.1. Open source-fællesskabet bidrager aktivt til projektet på GitHub.

Ressourcer og yderligere læsning

Der findes mange ressourcer til at lære mere om PowerShell-kode og scripting. Microsoft Learn tilbyder omfattende dokumentation og interaktive moduler, der dækker alt fra grundlæggende syntaks til avanceret automatisering. Du kan også finde PowerShell Overview på Microsoft Learn for at få et overblik over platformen. For en praktisk liste over ofte brugte cmdlets anbefales IONOS guide til PowerShell-kommandoer. Herudover er PowerShell-dokumentationen på Microsofts hjemmeside og Wikipedia-artiklen om PowerShell gode steder at starte.

Referencer

Microsoft Learn – PowerShell Overview: https://learn.microsoft.com/es-es/powershell/
Microsoft Learn – Scripting Language Specification: https://learn.microsoft.com/es-es/powershell/scripting/lang-spec/
IONOS – Top 40 PowerShell Cmdlets: https://www.ionos.es/digitalguide/servidores/configuracion/comandos-de-powershell/
Wikipedia – PowerShell: https://es.wikipedia.org/wiki/PowerShell
GitHub – PowerShell: https://github.com/PowerShell/PowerShell

PowerShell scripting automation Windows administration kodeeksempler IT værktøjer
Bemærk Indholdet er kun til informationsbrug og bør testes i et sikkert miljø før brug.
Forfatter

Stefano Barcellos

Bidragyder på Visite Barbados.

« Forrige indlæg
App til at beregne løberute og løbetid

Relaterede indlæg