Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

Historisk set har kommandolinjeværktøjer i Unix-systemer været bedre udviklet end i Windows, men med fremkomsten af en ny løsning har situationen ændret sig.

Windows PowerShell gør det muligt for systemadministratorer at automatisere de fleste rutineopgaver. Med det kan du ændre indstillinger, stoppe og starte tjenester samt vedligeholde de fleste installerede applikationer. At betragte det blå vindue som endnu en kommandotolk ville være forkert. Denne tilgang afspejler ikke essensen af de innovationer, Microsoft har tilbudt. Faktisk er mulighederne i Windows PowerShell meget bredere: i en kort serie artikler vil vi forsøge at afklare, hvordan Microsofts løsning adskiller sig fra de mere velkendte værktøjer.

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

Grundlæggende funktioner 

Det er klart, at Windows PowerShell først og fremmest er en kommandoprompt med et scriptsprog, oprindeligt baseret på .NET Framework, og senere på .NET Core. I modsætning til shell-versioner, der modtager og returnerer tekstdata, arbejder Windows PowerShell med .NET-klasser, som har egenskaber og metoder. PowerShell giver mulighed for at udføre almindelige kommandoer samt adgang til COM-, WMI- og ADSI-objekter. Den bruger forskellige datalagre, såsom filsystemet eller Windows-registret, som der er oprettet såkaldte udbydere (providers) for at få adgang til. Det er værd at bemærke muligheden for at integrere kørbare PowerShell-komponenter i andre applikationer for at udføre forskellige operationer, også gennem et grafisk interface. Det gælder også det modsatte: mange Windows-applikationer giver adgang til deres administrationsgrænseflader via PowerShell. 

Windows PowerShell gør det muligt at:

  • Ændre indstillinger for operativsystemet;
  • Administrere tjenester og processer;
  • Konfigurere serverroller og -komponenter;
  • Installere software;
  • Administrere installeret software via særlige grænseflader;
  • Integrere kørbare komponenter i tredjepartsprogrammer;
  • Oprette scripts til automatisering af administrationsopgaver;
  • Arbejder med filsystemet, Windows-registret, certifikatlageret osv.

Shell og udviklingsmiljø

Windows PowerShell findes i to versioner: udover konsol-emulatoren med en kommandolinje er der et integreret script-miljø (Integrated Scripting Environment - ISE). For at få adgang til kommandolinjegrænsefladen skal du blot vælge den relevante genvej i Windows-menuen eller køre powershell.exe fra menuen 'Kør'. Der vises et blåt vindue på skærmen, som adskiller sig betydeligt i funktionalitet fra det forældede cmd.exe. Her er der autoudfyldning og andre funktioner, som brugere af kommandolinjer i Unix-systemer kender til.

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

For at arbejde med shell'en er det nødvendigt at huske nogle tastekombinationer:

  • Piletasterne op og ned ruller gennem historikken for at gentage tidligere indtastede kommandoer;
  • Højre pil i slutningen af linjen gentager den tidligere kommando tegn for tegn;
  • Ctrl+Home sletter den indtastede tekst fra markørens position til starten af linjen;
  • Ctrl+End sletter tekst fra markøren til slutningen af linjen.

F7 viser et vindue med indtastede kommandoer og giver mulighed for at vælge en af dem. I konsollen fungerer også musen til at vælge tekst, kopiere og indsætte, placere markøren, slette, backspace — alt som vi elsker.

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Windows PowerShell ISE er et fuldt udviklingsmiljø med en kodeditor, der understøtter faner og syntaksfremhævelse, en kommando-konstruktør, en indbygget debugger og andre programmeringsglæder. Hvis du i udviklingsmiljøets editor skriver et bindestreg efter kommandoens navn, får du en dropdown-liste med alle tilgængelige parametre angivet med type. Du kan starte PowerShell ISE enten via en genvej fra systemmenuen eller ved hjælp af den eksekverbare fil powershell_ise.exe.

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

Cmdlets 

Windows PowerShell fik såkaldte cmdlets. Det er specialiserede .NET-klasser, som indeholder varieret funktionalitet. De navngives efter princippet 'Handling-Objekt' (eller 'Verbum-Substantiv', hvis du foretrækker det), og den bindestregsdelte forbindelse minder om verbet og subjektet i naturlige sprog. For eksempel betyder Get-Help bogstaveligt 'Få-Hjælp' eller i PowerShell-konteksten: 'Vis-Hjælp'. Det er i virkeligheden analogt med kommandoen man i Unix-systemer, og man skal anmode om manuels i PowerShell på denne måde, ikke ved at kalde cmdlets med nøgleordet --help eller /?. Husk også at tjekke Microsofts online dokumentation om PowerShell, som er ganske detaljeret.

Udover Get bruges der i cmdlets andre verber (og ikke kun verber, strengt taget). Nedenfor viser vi nogle eksempler:

Tilføj — tilføje;
Ryd — rydde;
Aktiver — aktivere;
Deaktiver — deaktivere;
Ny — oprette;
Fjern — fjerne;
Sæt — sætte;
Start — starte;
Stop — stoppe;
Eksportér — eksportere;
Importér — importere.

Der er system-, bruger- og valgfrie cmdlets: Ved udførelse returnerer de alle et objekt eller en array af objekter. De er ikke følsomme over for store og små bogstaver, dvs. med hensyn til fortolkeren af kommandoer er der ingen forskel mellem Get-Help og get-help. Adskillelsen foretages med symbolet ‘;’, men det skal kun bruges, hvis der udføres flere cmdlets på én linje. 

Windows PowerShell cmdlets grupperes i moduler (NetTCPIP, Hyper-V osv.), og for at søge efter et objekt og en handling findes cmdlet Get-Command. Du kan vise hjælp til det på følgende måde:

Get-Help Get-Command

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

Som standard viser kommandoen en kort hjælp, men der kan ved behov sendes parametre (argumenter) til cmdlets. Med deres hjælp kan du for eksempel få detaljeret hjælp (parameteren -Detailed) eller fuld hjælp (parameteren -Full), samt vise eksempler (parameteren -Examples):

Get-Help Get-Command -Examples

Hjælpen i Windows PowerShell opdateres med cmdlet Update-Help. Hvis kommandoens linje bliver for lang, kan cmdlets argumenter flyttes til den næste linje ved at skrive det speciale tegn ‘`’ og trykke på Enter — det går ikke bare at afslutte en kommando på én linje og fortsætte på en anden.

Her er nogle eksempler på almindelige cmdlets: 

Get-Process — vis de kørende processer i systemet;
Get-Service — vis tjenesterne og deres status;
Get-Content — vis indholdet af filen.

For ofte brugte cmdlets og eksterne værktøjer i Windows PowerShell er der korte synonymer — aliaser (fra engelsk Alias). For eksempel er dir et alias for Get-ChildItem. I synonymlisten findes også alternativer til kommandoer fra Unix-systemer (ls, ps osv.), og cmdlet Get-Help kaldes med kommandoen help. Du kan se den fulde liste over aliaser ved hjælp af cmdlet Get-Alias:

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

Scripts, funktioner, moduler og PowerShell-sprog

Windows PowerShell-scripts gemmes som almindelige tekstfiler med filtypen .ps1. De kan ikke startes med et dobbeltklik: du skal højreklikke for at åbne kontekstmenuen og vælge "Kør i PowerShell". Fra konsollen skal du enten angive den fulde sti til scriptet eller navigere til den relevante mappe og skrive filnavnet. Kørsel af scripts er også underlagt systempolitikken, og for at tjekke de aktuelle indstillinger kan du bruge cmdleten Get-ExecutionPolicy, som vil vise en af følgende værdier:

Restricted — kørsel af scripts er forbudt (standard);
AllSigned — kun kørsel af signeret scripts fra betroede udviklere er tilladt;
RemoteSigned — kørsel af signerede og egne scripts er tilladt;
Unrestricted — kørsel af alle scripts er tilladt.

Administrator har to muligheder. Den mest sikre indebærer signering af scripts, men det er en ret kompliceret proces — vi vil se nærmere på det i kommende artikler. Lige nu vil vi tage den nemmeste vej og ændre politikken:

Set-ExecutionPolicy RemoteSigned

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
PowerShell skal køres som administrator for dette, selvom du med en særlig parameter kan ændre politikken for den aktuelle bruger.

Scripts skrives i et objektorienteret programmeringssprog, hvis kommandoer navngives på samme måde som de tidligere nævnte cmdlets: "Handling-Objekt" ("Verbum-Substantiv"). Dets primære formål er at automatisere administrationsopgaver, men det er et fuldt ud tolket sprog, der indeholder alle nødvendige konstruktioner: betinget forgrening, loops, variabler, arrays, objekter, fejlbehandling osv. Enhver teksteditor kan bruges til at skrive scripts, men det er nemmest at starte Windows PowerShell ISE.

Du kan sende parametre til et script, gøre dem obligatoriske og angive standardværdier. Derudover tillader Windows PowerShell at oprette funktioner og kalde dem ligesom cmdlets: til dette bruges konstruktionen Function og krøllede parenteser. Et script med funktioner kaldes et modul og har filtypen .psm1. Moduler skal gemmes i mapper, der er defineret i PowerShell-omgivelsesvariabler. Du kan se dem ved hjælp af følgende kommando:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Konvolutter

I det sidste eksempel anvendte vi en struktur, der er velkendt for brugerne af Unix-systemets skaller. I Windows PowerShell tillader en lodret streg også at sende output fra en kommando som input til en anden, men der er en væsentlig forskel i implementeringen af konvolutten: det handler ikke længere om en samling tegn eller en hvilken som helst tekst. Indbyggede cmdlets eller brugerdefinerede funktioner returnerer objekter eller arrays af objekter og kan også modtage dem som input. Ligesom i Bourne shell og dets mange efterkommere forenkler PowerShell udførelsen af komplekse opgaver ved hjælp af konvolutter.

Det enkleste eksempel på en konvolut ser således ud:

Get-Service | Sort-Object -property Status

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Først udføres cmdlet'en Get-Service, og derefter sendes alle de modtagne tjenester til sortering efter egenskaben Status i cmdlet'en Sort-Object. Hvilken specifik parameter resultatet af den tidligere del af konvolutten sendes til afhænger af dens type — normalt er det InputObject. Dette spørgsmål vil blive uddybet i en artikel om programmeringssproget PowerShell. 

Hvis man ønsker det, kan kæden forlænges, og resultatet af Sort-Object kan sendes videre til endnu en cmdlet (de vil blive udført fra venstre mod højre). Forresten har Windows-brugere også adgang til den velkendte struktur for sidevisning fra Unix: 

Get-Service | Sort-Object -property Status | more

Kørsel af opgaver i baggrunden 

Det er ofte nødvendigt at starte en kommando i baggrunden, så man ikke skal vente på resultatet i skalkonsollen. I Windows PowerShell findes der flere cmdlets til dette formål:

Start-Job — start af en baggrundsopgave;
Stop-Job — stop af en baggrundsopgave;
Get-Job — visning af listen over baggrundsopgaver;
Receive-Job — visning af resultatet af udførelsen af en baggrundsopgave;
Remove-Job — sletning af en baggrundsopgave;
Wait-Job — overførsel af en baggrundsopgave tilbage til konsollen.

For at starte en baggrundsopgave bruger vi cmdlet'en Start-Job og angiver kommandoen eller sættet af kommandoer i krøllede parenteser:

Start-Job {Get-Service}

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Baggrundsopgaver i Windows PowerShell kan manipuleres ved at kende deres navne. Først skal vi lære at vise dem:

Get-Job

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Nu viser vi resultatet af opgaven Job1:

Receive-Job Job1 | more

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Det er ganske enkelt.

Fjernudførelse af kommandoer

Windows PowerShell giver mulighed for at udføre kommandoer og scripts ikke kun på den lokale computer, men også på en fjern computer og endda på en hel gruppe maskiner. Der er flere måder at gøre dette på:

  • Mange cmdlets har en parameter -ComputerName, men med denne metode kan man for eksempel ikke oprette en pipeline;
  • Cmdlet'en Enter-PSSession giver mulighed for at oprette en interaktiv session på den fjerneste maskine; 
  • Med cmdlet'en Invoke-Command kan man udføre kommandoer eller scripts på en eller flere fjerncomputere.

Versioner af PowerShell

Siden den første udgivelse i 2006 har PowerShell ændret sig markant. Værktøjet er tilgængeligt for mange systemer, der kører på forskellige hardwareplatforme (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux og OS X. Den seneste version 6.2 blev udgivet den 10. januar 2018. Scripts skrevet til tidligere versioner vil sandsynligvis fungere i senere versioner, men der kan opstå problemer med nedadgående kompatibilitet, da der i løbet af årene er kommet mange nye cmdlets til PowerShell. For at finde ud af versionen af den installerede kommandolinje kan man bruge egenskaben PSVersion fra den indbyggede variabel $PSVersionTable:

$PSVersionTable.PSVersion

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Man kan også bruge cmdlet'en:

Get-Variable -Name PSVersionTable –ValueOnly

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner
Det samme kan gøres med cmdlet'en Get-Host. Der er faktisk mange muligheder, men for at anvende dem skal man lære programmeringssproget PowerShell, hvilket vi vil gøre i den næste artikel. 

Resumé 

Microsofts succes har resulteret i en virkelig kraftfuld kommandolinje med et brugervenligt integreret miljø til udvikling af scripts. Den adskiller sig fra de velkendte værktøjer fra Unix-verdenen ved dens dybe integration med Windows-familien af operativsystemer samt med software til disse og .NET Core-platformen. PowerShell kan beskrives som en objektorienteret shell, fordi cmdlets og brugerdefinerede funktioner returnerer objekter eller objekt-arrays og kan tage dem som input. Vi mener, at alle serveradministratorer på Windows bør have kendskab til dette værktøj: tiden, hvor de kunne klare sig uden kommandolinjen, er forbi. Den avancerede kommandolinje er især nødvendig på vores prisvenlige VPS'er, der kører på Windows Server Core, men det er en helt anden historie.

Hvad er Windows PowerShell, og hvad bruges det til? Del 1: Grundlæggende funktioner

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, please.

Hvilke emner bør først nævnes i de næste artikler i serien?

  • 53,2%Programmering i PowerShell123

  • 42,4%Funktioner og moduler i PowerShell98

  • 22,1%Hvordan underskriver man sine egne scripts?51

  • 12,1%Arbejde med lagre via leverandører (providers)28

  • 57,6%Automatisering af computeradministration med PowerShell133

  • 30,7%Håndtering af software og integration af PowerShell-udførselskomponenter i tredjepartsprodukter71

231 brugere har stemt. 37 brugere har undladt at stemme.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster