Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

Historisk sett er kommandolinjeverktøy på Unix-systemer bedre utviklet enn på Windows, men med ankomsten av en ny løsning har situasjonen endret seg.

Windows PowerShell lar systemadministratorer automatisere de fleste rutineoppgaver. Med den kan du endre innstillinger, stoppe og starte tjenester, og også utføre vedlikehold på de fleste installerte applikasjoner. Det ville være feil å oppfatte det blå vinduet som en annen kommandotolk. Denne tilnærmingen gjenspeiler ikke essensen av innovasjonene foreslått av Microsoft. Mulighetene til Windows PowerShell er faktisk mye bredere: i en kort serie med artikler skal vi prøve å finne ut hvordan Microsoft-løsningen skiller seg fra verktøyene vi er mer kjent med.

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

Viktige funksjoner 

Windows PowerShell er selvfølgelig først og fremst et kommandoskall med et skriptspråk, opprinnelig bygget på .NET Framework og senere på .NET Core. I motsetning til skjell som aksepterer og returnerer tekstdata, fungerer Windows PowerShell med .NET-klasser, som har egenskaper og metoder. PowerShell lar deg kjøre vanlige kommandoer og gir deg også tilgang til COM-, WMI- og ADSI-objekter. Den bruker ulike lagringer, som filsystemet eller Windows-registeret, for tilgang til den såkalte. leverandører. Det er verdt å merke seg muligheten for å bygge inn PowerShell kjørbare komponenter i andre applikasjoner for å implementere ulike operasjoner, inkl. via grafisk grensesnitt. Det motsatte er også sant: mange Windows-applikasjoner gir tilgang til administrasjonsgrensesnittene deres gjennom PowerShell. 

Windows PowerShell lar deg:

  • Endre operativsysteminnstillinger;
  • Administrere tjenester og prosesser;
  • Konfigurer serverroller og komponenter;
  • Installer programvare;
  • Administrer installert programvare gjennom spesielle grensesnitt;
  • Bygg inn kjørbare komponenter i tredjepartsprogrammer;
  • Lag skript for å automatisere administrasjonsoppgaver;
  • Arbeid med filsystemet, Windows-registeret, sertifikatlageret osv.

Shell og utviklingsmiljø

Windows PowerShell finnes i to former: i tillegg til konsollemulatoren med et kommandoskall, er det et integrert skriptmiljø (ISE). For å få tilgang til kommandolinjegrensesnittet, velg ganske enkelt den aktuelle snarveien fra Windows-menyen eller kjør powershell.exe fra Kjør-menyen. Et blått vindu vil vises på skjermen, merkbart forskjellig i funksjoner fra antediluvian cmd.exe. Det er autofullføring og andre funksjoner som er kjent for brukere av kommandoskall for Unix-systemer.

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

For å jobbe med skallet, må du huske noen hurtigtaster:

  • Opp- og nedpilene ruller gjennom historien for å gjenta tidligere innskrevne kommandoer;
  • Høyre pil på slutten av linjen skriver inn forrige kommando på nytt tegn for tegn;
  • Ctrl+Hjem sletter den innskrevne teksten fra markørposisjonen til begynnelsen av linjen;
  • Ctrl+End sletter tekst fra markøren til slutten av linjen.

F7 viser et vindu med innskrevne kommandoer og lar deg velge en av dem. Konsollen fungerer også med tekstvalg med musen, copy-paste, markørplassering, sletting, backspace – alt vi liker.

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
Windows PowerShell ISE er et komplett utviklingsmiljø med en fanebasert og syntaks-uthevet koderedigerer, kommandobygger, innebygd debugger og andre programmeringsfornøyelser. Hvis du skriver en bindestrek etter kommandonavnet i utviklingsmiljøeditoren, får du opp alle tilgjengelige alternativer i nedtrekkslisten med en indikasjon på typen. Du kan starte PowerShell ISE enten via en snarvei fra systemmenyen, eller ved å bruke den kjørbare filen powershell_ise.exe.

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

Cmdlets 

I Windows PowerShell, den såkalte. cmdlets. Dette er spesialiserte .NET-klasser som gir en rekke funksjoner. De er navngitt i henhold til "Handling-Objekt"-prinsippet (eller "Verb-substantiv, hvis du foretrekker det), og bindestrek-separert bindeled minner om predikatet og subjektet i naturlige språksetninger. For eksempel betyr Get-Help bokstavelig talt "Få-Hjelp" eller i PowerShell-sammenheng: "Vis-Hjelp". Faktisk er dette en analog av man-kommandoen i Unix-systemer, og manualer i PowerShell må etterspørres på denne måten, og ikke ved å kalle cmdlets med –help eller /?-tasten.. Ikke glem nettdokumentasjonen for PowerShell: Microsoft har det ganske detaljert.

I tillegg til Get, bruker cmdlets også andre verb for å betegne handlinger (og ikke bare verb, strengt tatt). I listen nedenfor gir vi noen eksempler:

Add - Legg til;
Clear - klar;
Enable - Slå på;
Disable - slå av;
New - skape;
Remove - slette;
Set - spør;
Start - løpe;
Stop - Stoppe;
Export — eksport;
Import - import.

Det er system-, bruker- og valgfrie cmdlets: som et resultat av utførelse returnerer de alle et objekt eller en rekke objekter. De skiller ikke mellom store og små bokstaver, dvs. fra kommandotolkens ståsted er det ingen forskjell på Få-Hjelp og få-hjelp. Tegnet ';' brukes for separasjon, men det er obligatorisk å sette det bare hvis flere cmdlets kjøres på samme linje. 

Windows PowerShell-cmdlets er gruppert i moduler (NetTCPIP, Hyper-V, etc.), og det er en Get-Command-cmdlet for søk etter objekt og handling. Du kan vise hjelp til det slik:

Get-Help Get-Command

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

Som standard viser kommandoen kort hjelp, men parametere (argumenter) sendes til cmdlets etter behov. Med deres hjelp kan du for eksempel få detaljert (parameter -Detaljert) eller full (parameter -Full) hjelp, samt vise eksempler (parameter -Eksempler):

Get-Help Get-Command -Examples

Hjelp i Windows PowerShell oppdateres med Update-Help-cmdleten. Hvis en linje med kommandoer viser seg å være for lang, kan cmdlet-argumentene overføres til den neste ved å skrive tjenestetegnet '`' og trykke Enter - bare å fullføre en kommando på en linje og fortsette på en annen vil ikke fungere.

Her er noen eksempler på vanlige cmdlets: 

Get-Process - Vis kjørende prosesser i systemet;
Get-Service — vise tjenester og deres status;
Get-Content — vise innholdet i filen.

For ofte brukte cmdlets og eksterne verktøy har Windows PowerShell korte synonymer - aliaser (fra engelsk. Alias). For eksempel er dir et alias for Get-ChildItem. Listen over synonymer inkluderer også analoger av kommandoer fra Unix-systemer (ls, ps, etc.), og Get-Help-cmdleten kalles opp av hjelpekommandoen. En komplett liste over synonymer kan sees ved hjelp av Get-Alias ​​​​cmdlet:

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

PowerShell-skript, funksjoner, moduler og språk

Windows PowerShell-skript lagres som vanlige tekstfiler med en .ps1-utvidelse. Du kan ikke kjøre dem ved å dobbeltklikke: du må høyreklikke for å åpne kontekstmenyen og velge "Kjør i PowerShell". Fra konsollen må du enten spesifisere hele banen til skriptet, eller gå til riktig katalog og skrive filnavnet. Kjøring av skript er også begrenset av systempolicy, og for å sjekke gjeldende innstillinger kan du bruke Get-ExecutionPolicy cmdlet, som vil returnere en av følgende verdier:

Restricted — kjøring av skript er forbudt (som standard);
AllSigned - bare lansering av skript signert av en pålitelig utvikler er tillatt;
RemoteSigned - lov til å kjøre signerte og egne skript;
Unrestricted - Tillatt å kjøre alle skript.

Administratoren har to alternativer. Det sikreste innebærer å signere skript, men dette er en ganske alvorlig trolldom - vi vil håndtere det i fremtidige artikler. La oss nå ta minst motstands vei og endre politikken:

Set-ExecutionPolicy RemoteSigned

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
For å gjøre dette, må du kjøre PowerShell som administrator, selv om du kan bruke en spesiell parameter for å endre policyen for gjeldende bruker.

Skript er skrevet i et objektorientert programmeringsspråk, hvis kommandoer er navngitt i henhold til samme prinsipp som cmdletene som ble vurdert tidligere: "Action-Object" ("Verb-Noun"). Hovedformålet er å automatisere administrative oppgaver, men det er et fullverdig tolket språk som har alle nødvendige konstruksjoner: betinget hopp, løkker, variabler, arrays, objekter, feilhåndtering, etc. Ethvert tekstredigeringsprogram er greit for skripting, men det er best å kjøre Windows PowerShell ISE.

Du kan sende parametere til skriptet, gjøre dem nødvendige og angi standardverdier. I tillegg lar Windows PowerShell deg opprette og kalle opp funksjoner på samme måte som cmdlets, ved å bruke funksjonskonstruksjonen og krøllete klammeparenteser. Et skript med funksjoner kalles en modul og har en .psm1-utvidelse. Moduler må lagres i kataloger definert i PowerShell-miljøvariablene. Du kan se dem ved å bruke følgende kommando:

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

transportbånd

I det siste eksemplet har vi brukt en konstruksjon som er kjent for brukere av Unix-skall. I Windows PowerShell lar den vertikale linjen deg også sende utdata fra en kommando til inngangen til en annen, men det er en betydelig forskjell i implementeringen av rørledningen: vi snakker ikke lenger om et sett med tegn eller en slags tekst. Innebygde cmdlets eller brukerdefinerte funksjoner returnerer objekter eller arrays av objekter, og kan også motta dem som input. I likhet med Bourne-skallet og dets mange etterfølgere, gjør PowerShell komplekse oppgaver enklere med en pipeline.

Det enkleste eksemplet på en rørledning ser slik ut:

Get-Service | Sort-Object -property Status

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
Get-Service-cmdleten kjøres først, og deretter sendes alle tjenester den mottar til Sort-Object-cmdleten for sortering etter Status-egenskapen. Hvilket argument resultatet av den forrige delen av rørledningen sendes til avhenger av typen - vanligvis er det InputObject. Dette problemet vil bli diskutert mer detaljert i en artikkel dedikert til programmeringsspråket PowerShell. 

Hvis du ønsker det, kan du fortsette kjeden og overføre resultatet av Sort-Object-operasjonen til en annen cmdlet (de vil bli utført fra venstre mot høyre). Forresten, Windows-brukere har også tilgang til konstruksjonen for paginering som er kjent for alle Unixoider: 

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

Kjøre oppgaver i bakgrunnen 

Ganske ofte er det nødvendig å kjøre en bestemt kommando i bakgrunnen for ikke å vente på resultatet av dens utførelse i skalløkten. Windows PowerShell har flere cmdlets for denne situasjonen:

Start-Job - starte en bakgrunnsoppgave;
Stop-Job — stoppe en bakgrunnsoppgave;
Get-Job — se på listen over bakgrunnsoppgaver;
Receive-Job — se resultatet av bakgrunnsoppgaveutførelsen;
Remove-Job — slette en bakgrunnsoppgave;
Wait-Job - overføre bakgrunnsoppgaven tilbake til konsollen.

For å starte en bakgrunnsoppgave bruker vi Start-Job-cmdleten og spesifiserer en kommando eller et sett med kommandoer i krøllete klammeparenteser:

Start-Job {Get-Service}

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
Bakgrunnsoppgaver i Windows PowerShell kan manipuleres ved å kjenne navnene deres. Først, la oss lære hvordan du viser dem:

Get-Job

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
La oss nå vise resultatet av Job1:

Receive-Job Job1 | more

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
Det er ganske enkelt.

Ekstern kommandoutførelse

Windows PowerShell lar deg utføre kommandoer og skript ikke bare på den lokale datamaskinen, men også på en ekstern datamaskin, og til og med på en hel gruppe maskiner. Det er flere måter å gjøre dette på:

  • Mange cmdlets har en parameter -ComputerName, men på denne måten vil det ikke fungere for eksempel å lage en transportør;
  • Cmdlet Enter-PSSession lar deg lage en interaktiv økt på en ekstern maskin; 
  • Ved hjelp av cmdlet Invoke-Command Du kan kjøre kommandoer eller skript på én eller flere eksterne datamaskiner.

Versjoner av PowerShell

PowerShell har endret seg mye siden den første utgivelsen i 2006. Verktøyet er tilgjengelig for mange systemer som kjører på forskjellige maskinvareplattformer (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. Siste utgivelse 6.2 utgitt 10. januar 2018. Skript skrevet for tidligere versjoner vil sannsynligvis fungere i senere versjoner, men tilbakeportering kan være problematisk fordi PowerShell har introdusert et stort antall nye cmdlets i løpet av årene med utvikling. Du kan finne ut hvilken versjon av kommandoskallet som er installert på datamaskinen ved å bruke PSVersion-egenskapen til den innebygde variabelen $PSVersionTable:

$PSVersionTable.PSVersion

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
Du kan også bruke cmdleten:

Get-Variable -Name PSVersionTable –ValueOnly

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner
Det samme kan gjøres ved å bruke Get-Host-cmdleten. Faktisk er det mange alternativer, men for å bruke dem må du lære PowerShell-programmeringsspråket, som er det vi skal gjøre i neste artikkel

Resultater av 

Microsoft har klart å lage et virkelig kraftig kommandoskall med et praktisk integrert miljø for utvikling av skript. Det som skiller den fra verktøyene vi er kjent med i Unix-verdenen, er dens dype integrasjon med operativsystemene til Windows-familien, samt med programvare for dem og .NET Core-plattformen. PowerShell kan kalles et objektorientert skall fordi cmdlets og brukerdefinerte funksjoner returnerer objekter eller arrays av objekter og kan motta dem som input. Vi tror alle Windows-serveradministratorer bør eie dette verktøyet: tiden har gått da de kunne klare seg uten kommandolinjen. Et avansert konsollskall er spesielt nødvendig på vår lavpris VPS som kjører Windows Server Core, men det er en helt annen historie.

Hva er Windows PowerShell og hva spises det med? Del 1: Nøkkelfunksjoner

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Hvilke emner bør tas opp først i de neste artiklene i serien?

  • 53,2%Programmering i PowerShell123

  • 42,4%PowerShell98 funksjoner og moduler

  • 22,1%Hvordan signere dine egne manus?51

  • 12,1%Arbeide med depoter gjennom leverandører (leverandører)28

  • 57,6%Automatisering av datamaskinadministrasjon med PowerShell133

  • 30,7%Administrere programvare og bygge inn PowerShell-kjørbare filer i tredjepartsprodukter71

231 brukere stemte. 37 brukere avsto.

Kilde: www.habr.com

Legg til en kommentar