Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

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

Windows PowerShell giver systemadministratorer mulighed for at automatisere de fleste rutineopgaver. Med dens hjælp kan du ændre indstillinger, stoppe og starte tjenester og også udføre vedligeholdelse af de fleste installerede applikationer. Det ville være forkert at opfatte det blå vindue som en anden kommandofortolker. Denne tilgang afspejler ikke essensen af ​​de innovationer, som Microsoft har foreslået. Faktisk er mulighederne i Windows PowerShell meget bredere: I en kort serie af artikler vil vi forsøge at finde ud af, hvordan Microsoft-løsningen adskiller sig fra de værktøjer, vi er mere fortrolige med.

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

Nøglefunktioner 

Windows PowerShell er selvfølgelig primært en kommandoskal med et scriptsprog, oprindeligt bygget på .NET Framework og senere på .NET Core. I modsætning til skaller, der accepterer og returnerer tekstdata, arbejder Windows PowerShell med .NET-klasser, som har egenskaber og metoder. PowerShell giver dig mulighed for at køre almindelige kommandoer og giver dig også adgang til COM-, WMI- og ADSI-objekter. Den bruger forskellige lagringspladser, såsom filsystemet eller Windows-registreringsdatabasen, til adgang til, hvortil den såkaldte. leverandører. Det er værd at bemærke muligheden for at indlejre PowerShell eksekverbare komponenter i andre applikationer for at implementere forskellige operationer, inkl. via grafisk grænseflade. Det omvendte er også sandt: Mange Windows-applikationer giver adgang til deres administrationsgrænseflader gennem PowerShell. 

Windows PowerShell giver dig mulighed for at:

  • Skift operativsystemindstillinger;
  • Administrere tjenester og processer;
  • Konfigurer serverroller og komponenter;
  • Installer software;
  • Administrer installeret software gennem specielle grænseflader;
  • Integrer eksekverbare komponenter i tredjepartsprogrammer;
  • Opret scripts for at automatisere administrationsopgaver;
  • Arbejd med filsystemet, Windows-registreringsdatabasen, certifikatlageret osv.

Shell og udviklingsmiljø

Windows PowerShell findes i to former: Ud over konsolemulatoren med en kommandoskal er der et integreret scriptmiljø (ISE). For at få adgang til kommandolinjegrænsefladen skal du blot vælge den relevante genvej fra Windows-menuen eller køre powershell.exe fra Kør-menuen. Der vises et blåt vindue på skærmen, mærkbart anderledes end antediluvianske cmd.exe. Der er autofuldførelse og andre funktioner, der er kendt for brugere af kommandoskaller til Unix-systemer.

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

For at arbejde med skallen skal du huske nogle tastaturgenveje:

  • Op- og ned-pilene ruller gennem historikken for at gentage tidligere indtastede kommandoer;
  • Højre pil i slutningen af ​​linjen genskriver den forrige kommando tegn for tegn;
  • Ctrl+Home sletter den indtastede tekst fra markørens position til begyndelsen af ​​linjen;
  • Ctrl+End sletter tekst fra markøren til slutningen af ​​linjen.

F7 viser et vindue med de indtastede kommandoer og giver dig mulighed for at vælge en af ​​dem. Konsollen fungerer også ved at markere tekst med musen, kopiere og indsætte, placere markøren, slette, gå tilbage – alt hvad vi elsker.

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Windows PowerShell ISE er et fuldgyldigt udviklingsmiljø med en kodeeditor, der understøtter faner og syntaksfremhævning, en kommandodesigner, en indbygget debugger og andre programmeringsfornøjelser. Hvis du skriver en bindestreg efter kommandonavnet i udviklingsmiljøeditoren, vil du modtage alle tilgængelige parametre i rullelisten, der angiver typen. Du kan starte PowerShell ISE enten via en genvej fra systemmenuen eller ved at bruge den eksekverbare fil powershell_ise.exe.

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

Cmdlets 

I Windows PowerShell er den såkaldte. cmdlets. Disse er specialiserede .NET-klasser, der giver en række funktioner. De er navngivet efter "Action-Object"-princippet (eller "Verb-substantiv, hvis du foretrækker det), og bindestregadskilt bindeled ligner prædikatet og subjektet i naturlige sprogsætninger. For eksempel betyder Get-Help bogstaveligt "Få-Hjælp" eller i en PowerShell-sammenhæng: "Vis-Hjælp". Faktisk er dette en analog af man-kommandoen i Unix-systemer, og manualer i PowerShell skal rekvireres på denne måde, og ikke ved at kalde cmdlets med –help- eller /?-tasten.. Glem ikke online-dokumentationen for PowerShell: Microsoft har det ret detaljeret.

Ud over Get, bruger cmdlets også andre verber til at betegne handlinger (og ikke kun verber, strengt taget). I listen nedenfor giver vi nogle eksempler:

Add - tilføje;
Clear - ren;
Enable - tænde for;
Disable - slukke;
New - skab;
Remove - slette;
Set - Spørg;
Start - løb;
Stop - hold op;
Export - eksport;
Import - import.

Der er system-, bruger- og valgfri cmdlets: Som et resultat af udførelse returnerer de alle et objekt eller en række objekter. De skelner ikke mellem store og små bogstaver, dvs. Fra kommandotolkens synspunkt er der ingen forskel på Få-Hjælp og få-hjælp. Symbolet ';' bruges til adskillelse, men det er kun påkrævet, hvis der udføres flere cmdlets på en linje. 

Windows PowerShell-cmdlets er grupperet i moduler (NetTCPIP, Hyper-V osv.), og der er en Get-Command-cmdlet til søgning efter objekt og handling. Du kan vise hjælp til det sådan her:

Get-Help Get-Command

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

Som standard viser kommandoen hurtig hjælp, men parametre (argumenter) sendes til cmdlets efter behov. Med deres hjælp kan du f.eks. få detaljeret (-Detailed parameter) eller komplet (-Full) hjælp, samt vise eksempler (-Examples parameter):

Get-Help Get-Command -Examples

Hjælp i Windows PowerShell opdateres med Update-Help cmdlet'en. Hvis en kommandolinje viser sig at være for lang, kan cmdlet-argumenterne overføres til den næste ved at skrive tjenestetegnet '`' og trykke på Enter - det vil ikke fungere at afslutte en kommando på én linje og fortsætte på en anden.

Nedenfor er nogle eksempler på almindelige cmdlets: 

Get-Process — Vis processer, der kører i systemet;
Get-Service — vise tjenester og deres status;
Get-Content - Vis indholdet af filen.

For ofte brugte cmdlets og eksterne hjælpeprogrammer har Windows PowerShell korte synonymer - aliaser. For eksempel er dir et alias for Get-ChildItem. Der er også analoger til kommandoer fra Unix-systemer i listen over synonymer (ls, ps, osv.), og Get-Help-cmdlet'en kaldes af hjælpekommandoen. Den fulde liste over synonymer kan ses ved hjælp af Get-Alias ​​​​cmdlet:

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

PowerShell-scripts, funktioner, moduler og sprog

Windows PowerShell-scripts gemmes som almindelige tekstfiler med filtypenavnet .ps1. Du kan ikke køre dem ved at dobbeltklikke: 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 gå til den relevante mappe og skrive filnavnet. Kørsel af scripts er også begrænset af systempolitik, og for at kontrollere de aktuelle indstillinger kan du bruge Get-ExecutionPolicy cmdlet'en, som returnerer en af ​​følgende værdier:

Restricted — at køre scripts er forbudt (som standard);
AllSigned — kun scripts, der er signeret af en betroet udvikler, må køre;
RemoteSigned - Tilladt at køre signerede og egne scripts;
Unrestricted - Tilladt at køre alle scripts.

Administratoren har to muligheder. Det mest sikre involverer at underskrive scripts, men dette er en ganske alvorlig trolddom - vi vil behandle det i de følgende artikler. Lad os nu tage den mindste modstands vej og ændre politikken:

Set-ExecutionPolicy RemoteSigned

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
For at gøre dette skal du køre PowerShell som administrator, selvom du kan bruge en speciel parameter til at ændre politikken for den aktuelle bruger.

Scripts er skrevet i et objektorienteret programmeringssprog, hvis kommandoer er navngivet efter samme princip som de tidligere diskuterede cmdlets: "Action-Object" ("Verb-Noun"). Dets hovedformål er at automatisere administrationsopgaver, men det er et fuldgyldigt fortolket sprog, der har alle de nødvendige konstruktioner: betinget spring, loops, variabler, arrays, objekter, fejlhåndtering osv. Enhver teksteditor er velegnet til at skrive scripts, men det er mest praktisk at køre Windows PowerShell ISE.

Du kan sende parametre til scriptet, gøre dem obligatoriske og også indstille standardværdier. Windows PowerShell giver dig også mulighed for at oprette og kalde funktioner på samme måde som cmdlet'er ved hjælp af funktionskonstruktionen og krøllede klammeparenteser. Et script med funktioner kaldes et modul og har en .psm1-udvidelse. Moduler skal gemmes i mapper, der er defineret i PowerShell-miljøvariabler. Du kan se dem ved hjælp af følgende kommando:

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

Transportører

I det sidste eksempel brugte vi et design, der er kendt for brugere af Unix-skaller. I Windows PowerShell giver den lodrette bjælke dig også mulighed for at sende output fra en kommando til input fra en anden, men der er en væsentlig forskel i implementeringen af ​​pipelinen: vi taler ikke længere om et sæt tegn eller noget tekst. Indbyggede cmdlets eller brugerdefinerede funktioner returnerer objekter eller arrays af objekter og kan også modtage dem som input. Ligesom Bourne-skallen og dens mange efterfølgere bruger PowerShell en pipeline til at forenkle komplekse opgaver.

Det enkleste eksempel på en pipeline ser sådan ud:

Get-Service | Sort-Object -property Status

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Get-Service cmdlet'en udføres først, og derefter sendes alle tjenester, den modtager, til Sort-Object cmdlet'en til sortering efter egenskaben Status. Hvilket argument resultatet af den forrige sektion af pipelinen sendes til afhænger af dets type - normalt er det InputObject. Dette problem vil blive diskuteret mere detaljeret i en artikel dedikeret til PowerShell-programmeringssproget. 

Hvis det ønskes, kan du fortsætte kæden og videregive resultatet af Sort-Object til en anden cmdlet (de vil blive udført fra venstre mod højre). Forresten har Windows-brugere også adgang til det design, der er kendt for alle Unixoider til side-for-side output: 

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

Kører opgaver i baggrunden 

Ganske ofte er det nødvendigt at køre en bestemt kommando i baggrunden for ikke at vente på resultatet af dens udførelse i shell-sessionen. Windows PowerShell har flere cmdlets til denne situation:

Start-Job — starte en baggrundsopgave;
Stop-Job — standse en baggrundsopgave;
Get-Job — se listen over baggrundsopgaver;
Receive-Job — se resultatet af en baggrundsopgave;
Remove-Job — sletning af en baggrundsopgave;
Wait-Job — overføre baggrundsopgaven tilbage til konsollen.

For at starte en baggrundsopgave bruger vi Start-Job-cmdlet'en og angiver en kommando eller et sæt kommandoer i krøllede klammeparenteser:

Start-Job {Get-Service}

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Baggrundsopgaver i Windows PowerShell kan manipuleres ved at kende deres navne. Lad os først lære, hvordan du viser dem:

Get-Job

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Lad os nu vise resultatet af Job1:

Receive-Job Job1 | more

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Alt er ret simpelt.

Ekstern kommandoudførelse

Windows PowerShell giver dig mulighed for at køre kommandoer og scripts ikke kun lokalt, men også på en fjerncomputer og endda på en hel gruppe af maskiner. Der er flere måder at gøre dette på:

  • Mange cmdlets har en parameter -ComputerName, men på denne måde vil det ikke fungere, for eksempel at skabe en transportør;
  • Cmdlet Enter-PSSession giver dig mulighed for at oprette en interaktiv session på en ekstern maskine; 
  • Brug af en cmdlet Invoke-Command Du kan køre kommandoer eller scripts på en eller flere fjerncomputere.

PowerShell-versioner

Siden den første udgivelse i 2006 har PowerShell ændret sig meget. 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 udgivelse 6.2 blev udgivet den 10. januar 2018. Scripts skrevet til tidligere versioner vil med stor sandsynlighed virke i senere versioner, men der kan opstå problemer med en omvendt overførsel, da der gennem årenes udvikling er dukket et stort antal nye cmdlets op i PowerShell. Du kan finde ud af, hvilken version af kommandoskallen, der er installeret på din computer, ved hjælp af egenskaben PSVersion i den indbyggede $PSVersionTable-variabel:

$PSVersionTable.PSVersion

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Du kan også bruge cmdlet'en:

Get-Variable -Name PSVersionTable –ValueOnly

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner
Det samme kan gøres ved hjælp af Get-Host cmdlet'en. Faktisk er der mange muligheder, men for at bruge dem skal du lære PowerShell-programmeringssproget, hvilket er, hvad vi vil gøre i næste artikel

Resultaterne af 

Microsoft har formået at skabe en virkelig kraftfuld kommandoskal med et praktisk integreret miljø til udvikling af scripts. Det, der adskiller den fra de værktøjer, vi kender i Unix-verdenen, er dens dybe integration med operativsystemer i Windows-familien, samt med software til dem og .NET Core-platformen. PowerShell kan kaldes en objektorienteret shell, fordi cmdlets og brugerdefinerede funktioner returnerer objekter eller arrays af objekter og kan modtage dem som input. Vi mener, at alle Windows-serveradministratorer burde eje dette værktøj: tiden er gået, hvor de kunne undvære kommandolinjen. En avanceret konsolskal er især nødvendig på vores billige VPS, der kører Windows Server Core, men det er en helt anden historie.

Hvad er Windows PowerShell, og hvad spises det med? Del 1: Nøglefunktioner

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Hvilke emner skal behandles først i de næste artikler i serien?

  • 53,2 %Programmering i PowerShell123

  • 42,4 %PowerShell98 funktioner og moduler

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

  • 12,1 %Arbejde med repositories gennem udbydere (udbydere)28

  • 57,6 %Automatiser computeradministration ved hjælp af PowerShell133

  • 30,7 %Håndtering af software og indlejring af PowerShell-eksekverbare filer i tredjepartsprodukter71

231 brugere stemte. 37 brugere undlod at stemme.

Kilde: www.habr.com

Tilføj en kommentar