Indholdsfortegnelse
Nøgle takeaways
- PowerShell er et scriptsprog, der kan hjælpe med at automatisere computeropgaver.
- Cmdlets er enkeltfunktions Powershell-kommandoer. Du kan se tilgængelige kommandoer med “Get-Command”.
- PowerShell er tilgængelig på Windows, macOS og Linux.
PowerShell er et scriptsprog, der kan hjælpe dig med at automatisere computeropgaver enkelt og pålideligt. Find ud af, hvordan du bruger det til at begynde at bygge scripts til din Windows-pc.
PowerShell Scripting Oversigt
For at begynde at lave simple PowerShell-scripts på Windows skal du vide om tre ting:
- Cmdlets: enkeltfunktionskommandoer.
- Parametre: specificer hvad, hvornår, hvor og hvordan for Cmdlets/kommandoer.
- Pipeline: tager outputtet fra din Cmdlet og dens parametre og forbinder den med andre Cmdlet’er og funktioner.
Ved at kombinere alle tre kan du lave enkle scripts for at hjælpe med at automatisere opgaver.
Her er et eksempel på en pipeline, der viser, hvordan du kan kombinere flere Cmdlets for at opnå en opgave:
For at køre denne pipeline i PowerShell, ville du bruge noget som denne kommando:
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl
Cmdlets i detaljer
Som ethvert scriptsprog kommer PowerShell forudbygget med kommandoer til at manipulere objekter og udføre forskellige opgaver. Disse grundlæggende kommandoer i PowerShell er kendt som Cmdlets.
Cmdlets (udtales som command-lets) er små enkeltfunktionskommandoer, der bruges i PowerShell-miljøet ved hjælp af .dll-udvidelsen. De er lette stykker kode, der udføres hurtigere end funktioner på grund af deres kompilerede natur.
Der er tusindvis af Cmdlets tilgængelige på PowerShell. Du behøver ikke at lære dem alle. Du kan starte med at lære et par grundlæggende PowerShell Cmdlets og derefter fortsætte med at lære, mens du går gennem din scriptrejse. For at se de Cmdlet’er, der allerede er installeret på din computer, skal du køre:
Get-Command
Hvis du scanner resultaterne igennem, vil du bemærke, at de følger en verbum-substantiv-navngivningskonvention. Dette gør det lettere at forstå, hvad en bestemt Cmdlet gør.
For eksempel giver Get-Command en liste over tilgængelige kommandoer i PowerShell. Get-Process giver dig de processer, der i øjeblikket er aktive, og Copy-Item kopierer en eller flere filer til en bestemt mappe.
Cmdlet’er leveres også med omfattende dokumentation, der inkluderer eksempler, brugsinstruktioner og forklaringer af deres funktionalitet.
For at finde ud af mere om en specifik Cmdlet, og hvordan du bruger den, skal du køre:
Get-Help <name-of-cmdlet>
PowerShell-parametre forklaret
Cmdlets kan acceptere parametre for at variere deres adfærd. Når du kører en Cmdlet eller funktion, kan du angive parameterværdier for at angive hvad, hvornår, hvor og hvordan hver PowerShell-kommando kører.
For eksempel vil Get-Process hente og liste over alle de aktive processer i dit operativsystem:
Men hvad nu hvis du kun ønsker at få en bestemt proces? Du kan gøre det ved hjælp af parametre. For at få alle Slack-processer kan du f.eks. bruge parameteren Navn med Get-Process Cmdlet:
Get-Process -Name Slack
Du vil så kun se de processer med navnet “slack”:
Nogle parametre er “positionelle”, hvilket betyder, at deres navn er valgfrit. I dette tilfælde gør Get-Process -Name Slack og Get-Process Slack det samme.
Hver Cmdlet vil acceptere forskellige typer parametre. Brug kommandoen Get-Help til at se de accepterede parametre for en Cmdlet i SYNTAX sektionen.
Get-Help Get-Process
Du vil se en liste over alle mulige måder, du kan køre den givne Cmdlet på:
I dette tilfælde accepterer Get-Process Cmdlet’en parametre såsom Navn, Id, Computernavn, Modul, FileVersionInfo og andre almindelige parametre. Symbolerne her betyder:
Symbol |
Navn |
Betyder |
---|---|---|
Blank |
Parameter accepterer ikke input |
|
– |
Bindestreg |
Angiver parameternavn |
<> |
Vinklede beslag |
Pladsholder til tekst |
[] |
Beslag |
Parameter, der kan acceptere en eller flere værdier |
{} |
Seler |
Parameter accepterer et sæt værdier |
Parametre, der accepterer input, vil angive den type data, de kræver, såsom en streng, heltal, boolean eller DateTime. For eksempel dette:
Get-Process [[-Name] <string[]>]
Betyder, at Name-parameteren accepterer en eller flere strengværdier, mens denne:
Get-Process -Id <int[]>
Betyder, at Id-parameteren accepterer en eller flere heltalsværdier.
Det tidligere Get-Process-eksempel brugte Name-parameteren til at indsnævre resultaterne. Men hvis du vil indsnævre det til en endnu mere specifik proces, kan du bruge ID-parameteren, som kræver et heltal som angivet i dets syntaks.
Get-Process -Id 3016
Du skulle så kun se én proces på listen:
Oprettelse af en rørledning
PowerShell behandler alle data som objekter. For at bygge et script flyder disse objekter gennem en række Cmdlets eller funktioner forbundet med et rørsymbol ( | ). At vælge de rigtige Cmdlets og forbinde dem i en logisk rækkefølge ved hjælp af pipeline er afgørende for et effektivt script.
Lad os sige, at du opretter et script til at sortere og vise de fem filer, der tager mest lagerplads i en mappe. Der er mere robuste måder at oprette et filsorteringsscript på, men følgende one-liner er let at forstå:
For at gøre dette i PowerShell skal du bruge en pipeline, der ser sådan ud:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Gemmer Pipeline som et PS1-script
Nu hvor vi har en fungerende pipeline, kan du gemme den som en PS1-scriptfil, så du ikke behøver at blive ved med at skrive den, hver gang du bruger den.
Den enkleste måde at oprette en PS1-fil på er at indsætte dit script i Notesblok og gemme filen med filtypenavnet .ps1.
Når du har oprettet din PS1-fil, kan du bruge den i PowerShell ved at køre ./ScriptName.ps1:
Tillykke! Du kan nu oprette PowerShell PS1-scripts.
PowerShell er også tilgængelig på Linux og macOS
PowerShell er et af de bedste begynder-scriptsprog, nogen kan lære. Selvom PowerShell kun var begrænset til Windows tidligere, er den opdaterede version af PowerShell nu også tilgængelig på macOS og mange Linux-distributioner! Dette gør PowerShell endnu mere tiltalende, da du kan overføre din viden fra Windows til andre operativsystemer.