Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

Historiskt sett är kommandoradsverktyg på Unix-system bättre utvecklade än på Windows, men med tillkomsten av en ny lösning har situationen förändrats.

Windows PowerShell tillåter systemadministratörer att automatisera de flesta rutinuppgifter. Med den kan du ändra inställningar, stoppa och starta tjänster och även utföra underhåll på de flesta installerade applikationer. Det skulle vara fel att uppfatta det blå fönstret som en annan kommandotolk. Detta tillvägagångssätt återspeglar inte kärnan i de innovationer som föreslås av Microsoft. Faktum är att möjligheterna med Windows PowerShell är mycket bredare: i en kort serie artiklar kommer vi att försöka ta reda på hur Microsofts lösning skiljer sig från de verktyg vi är mer bekanta med.

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

Viktiga funktioner 

Naturligtvis är Windows PowerShell i första hand ett skriptskal, ursprungligen byggt på .NET Framework och senare på .NET Core. Till skillnad från skal som accepterar och returnerar textdata, fungerar Windows PowerShell med .NET-klasser som har egenskaper och metoder. PowerShell låter dig köra vanliga kommandon och ger dig även tillgång till COM-, WMI- och ADSI-objekt. Den använder olika lagringar, som filsystemet eller Windows-registret, för åtkomst till vilka sk. leverantörer. Det är värt att notera möjligheten att bädda in PowerShell körbara komponenter i andra applikationer för att implementera olika operationer, inkl. genom ett grafiskt gränssnitt. Det omvända är också sant: många Windows-program ger tillgång till sina hanteringsgränssnitt via PowerShell. 

Windows PowerShell låter dig:

  • Ändra operativsysteminställningar;
  • Hantera tjänster och processer;
  • Konfigurera serverroller och komponenter;
  • Installera programvara;
  • Hantera installerad programvara genom speciella gränssnitt;
  • Bädda in körbara komponenter i tredjepartsprogram;
  • Skapa skript för att automatisera administrationsuppgifter;
  • Arbeta med filsystemet, Windows-registret, certifikatarkivet, etc.

Shell och utvecklingsmiljö

Windows PowerShell finns i två former: förutom konsolemulatorn med ett kommandoskal finns det en Integrated Scripting Environment (ISE). För att komma åt kommandoradsgränssnittet, välj helt enkelt lämplig genväg från Windows-menyn eller kör powershell.exe från Kör-menyn. Ett blått fönster kommer att visas på skärmen, märkbart annorlunda i kapacitet från antediluvian cmd.exe. Det finns autokomplettering och andra funktioner som är bekanta för användare av kommandoskal för Unix-system.

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

För att arbeta med skalet måste du komma ihåg några kortkommandon:

  • Upp- och nedpilarna rullar genom historiken för att upprepa tidigare inskrivna kommandon;
  • Högerpilen i slutet av en rad skriver om föregående kommando tecken för tecken;
  • Ctrl+Home raderar den inskrivna texten från markörens position till början av raden;
  • Ctrl+End tar bort text från markören till slutet av raden.

F7 visar ett fönster med inskrivna kommandon och låter dig välja ett av dem. Konsolen fungerar även med textval med musen, copy-paste, markörpositionering, radering, backsteg – allt vi gillar.

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Windows PowerShell ISE är en komplett utvecklingsmiljö med en flikar och syntaxmarkerade kodredigerare, kommandobyggare, inbyggd debugger och andra programmeringsnöjen. Om du skriver ett bindestreck efter kommandonamnet i utvecklingsmiljöredigeraren får du alla tillgängliga alternativ i rullgardinsmenyn med en indikation på typen. Du kan starta PowerShell ISE antingen genom en genväg från systemmenyn eller med den körbara filen powershell_ise.exe.

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

Cmdlets 

I Windows PowerShell, den sk. cmdlets. Dessa är specialiserade .NET-klasser som tillhandahåller en mängd olika funktioner. De heter Action-Object (eller Verb-Substantiv, om du föredrar det), och den bindestreckseparerade länken liknar predikatet och subjektet i naturliga meningar. Till exempel betyder Get-Help bokstavligen "Få-Hjälp", eller i ett PowerShell-sammanhang: "Visa-Hjälp". I själva verket är detta en analog till man-kommandot i Unix-system, och manualer i PowerShell måste begäras på detta sätt, och inte genom att anropa cmdlets med --help eller /?-tangenten. Glöm inte PowerShell-dokumentationen online: Microsoft har det ganska detaljerat.

Förutom Get, använder cmdlets andra verb för att beteckna handlingar (och inte bara verb, strängt taget). I listan nedan ger vi några exempel:

Add - Lägg till;
Clear - klar;
Enable - sätta på;
Disable - Stäng av;
New - skapa;
Remove - radera;
Set - fråga;
Start - springa;
Stop - sluta;
Export - export;
Import - import.

Det finns system-, användar- och valfria cmdlets: som ett resultat av exekvering returnerar de alla ett objekt eller en array av objekt. De är inte skiftlägeskänsliga, dvs. ur kommandotolkens synvinkel är det ingen skillnad mellan Get-Help och get-help. Tecknet ';' används för separation, men det är obligatoriskt att sätta det endast om flera cmdlets körs på samma rad. 

Windows PowerShell-cmdlets är grupperade i moduler (NetTCPIP, Hyper-V, etc.), och det finns en Get-Command-cmdlet för att söka efter objekt och åtgärd. Du kan visa hjälp för det så här:

Get-Help Get-Command

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

Som standard visar kommandot kort hjälp, men parametrar (argument) skickas till cmdlets efter behov. Med deras hjälp kan du till exempel få detaljerad (parameter -Detaljerad) eller fullständig (parameter -Full) hjälp, samt visa exempel (parameter -Exempel):

Get-Help Get-Command -Examples

Hjälp i Windows PowerShell uppdateras av cmdleten Update-Help. Om kommandoraden visar sig vara för lång kan cmdlet-argumenten flyttas till nästa genom att skriva tjänstetecknet '`' och trycka på Enter - att bara skriva klart kommandot på en rad och fortsätta på en annan kommer inte att fungera.

Här är några exempel på vanliga cmdlets: 

Get-Process - visa pågående processer i systemet;
Get-Service — Visa tjänster och deras status;
Get-Content - visa innehållet i filen.

För ofta använda cmdlets och externa verktyg har Windows PowerShell korta synonymer - alias (från engelska. Alias). Till exempel är dir ett alias för Get-ChildItem. Listan över synonymer innehåller också analoger till kommandon från Unix-system (ls, ps, etc.), och Get-Help-cmdleten anropas av hjälpkommandot. En komplett lista över synonymer kan ses med Get-Alias ​​​​cmdlet:

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

Skript, funktioner, moduler och PowerShell-språket

Windows PowerShell-skript lagras som vanliga textfiler med filtillägget .ps1. Du kan inte starta dem genom att dubbelklicka: du måste högerklicka för att ta fram snabbmenyn och välja alternativet "Kör i PowerShell". Från konsolen måste du antingen ange den fullständiga sökvägen till skriptet eller gå till lämplig katalog och skriva filnamnet. Att köra skript är också begränsat av systempolicy, och för att kontrollera de aktuella inställningarna kan du använda Get-ExecutionPolicy cmdleten, som returnerar ett av följande värden:

Restricted — start av skript är inaktiverat (som standard);
AllSigned - endast lansering av skript signerade av en pålitlig utvecklare är tillåten;
RemoteSigned - får köra signerade och egna skript;
Unrestricted - får köra alla skript.

Administratören har två alternativ. Det säkraste innebär att signera skript, men det här är en ganska allvarlig trolldom - vi kommer att ta itu med det i framtida artiklar. Låt oss nu ta minsta motståndets väg och ändra politiken:

Set-ExecutionPolicy RemoteSigned

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
PowerShell måste köras som administratör för att göra detta, även om du kan ändra policyn för den aktuella användaren med en speciell inställning.

Skript är skrivna i ett objektorienterat programmeringsspråk, vars kommandon är namngivna enligt samma princip som de cmdlets som ansågs tidigare: "Action-Object" ("Verb-Substantiv"). Dess huvudsakliga syfte är att automatisera administrativa uppgifter, men det är ett fullfjädrat tolkat språk som har alla nödvändiga konstruktioner: villkorligt hopp, loopar, variabler, arrayer, objekt, felhantering, etc. Alla textredigerare är bra för skript, men det är bäst att köra Windows PowerShell ISE.

Du kan skicka parametrar till skriptet, göra dem obligatoriska och ställa in standardvärden. Dessutom låter Windows PowerShell dig skapa och anropa funktioner på samma sätt som cmdlets, genom att använda funktionskonstruktionen och klammerparenteser. Ett skript med funktioner kallas en modul och har tillägget .psm1. Moduler måste lagras i kataloger som definieras i PowerShell-miljövariablerna. Du kan se dem med följande kommando:

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

Transportörer

I det sista exemplet har vi använt en konstruktion som är bekant för Unix-skalanvändare. I Windows PowerShell låter den vertikala stapeln dig också skicka utdata från ett kommando till ingången av ett annat, men det finns en betydande skillnad i implementeringen av pipeline: vi pratar inte längre om en uppsättning tecken eller någon form av text. Inbyggda cmdlets eller användardefinierade funktioner returnerar objekt eller arrayer av objekt och kan även ta emot dem som indata. Precis som Bourne-skalet och dess många efterföljare gör PowerShell komplexa uppgifter enklare med en pipeline.

Det enklaste pipelineexemplet ser ut så här:

Get-Service | Sort-Object -property Status

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Först exekveras Get-Service-cmdleten, och sedan skickas alla tjänster som tas emot av den till Sorter-Object-cmdleten för sortering efter egenskapen Status. Vilket argument resultatet av föregående avsnitt av pipelinen skickas till beror på dess typ - vanligtvis är det InputObject. Den här frågan kommer att diskuteras mer i detalj i en artikel dedikerad till programmeringsspråket PowerShell. 

Om du vill kan du fortsätta kedjan och skicka resultatet av Sort-Object-operationen till en annan cmdlet (de kommer att köras från vänster till höger). Förresten, Windows-användare har också tillgång till konstruktionen för paginering som är bekant för alla Unixoider: 

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

Kör uppgifter i bakgrunden 

Ganska ofta är det nödvändigt att köra ett visst kommando i bakgrunden för att inte vänta på resultatet av dess exekvering i skalsessionen. Windows PowerShell har flera cmdlets för detta fall:

Start-Job - starta en bakgrundsuppgift;
Stop-Job — stoppa bakgrundsuppgiften;
Get-Job — se listan över bakgrundsuppgifter;
Receive-Job — se resultatet av utförandet av bakgrundsuppgiften;
Remove-Job — ta bort en bakgrundsuppgift;
Wait-Job - överföra bakgrundsuppgiften tillbaka till konsolen.

För att starta en bakgrundsuppgift använder vi Start-Job-cmdleten och anger ett kommando eller en uppsättning kommandon med hängslen:

Start-Job {Get-Service}

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Bakgrundsuppgifter i Windows PowerShell kan manipuleras genom att känna till deras namn. Låt oss först lära oss hur man visar dem:

Get-Job

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Låt oss nu visa resultatet av jobbet Job1:

Receive-Job Job1 | more

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Allt är ganska enkelt.

Exekvering av fjärrkommando

Windows PowerShell låter dig köra kommandon och skript inte bara på den lokala datorn, utan också på en fjärrdator, och till och med på en hel grupp av maskiner. Det finns flera sätt att göra detta:

  • Många cmdlets har en parameter -ComputerName, men på så sätt fungerar det till exempel inte att skapa en transportör;
  • Cmdlet Enter-PSSession låter dig skapa en interaktiv session på en fjärrmaskin; 
  • Använder cmdleten Invoke-Command du kan köra kommandon eller skript på en eller flera fjärrdatorer.

Versioner av PowerShell

PowerShell har förändrats mycket sedan den första releasen 2006. Verktyget är tillgängligt för många system som körs på olika hårdvaruplattformar (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 och OS X. Senaste version 6.2 släpptes den 10 januari 2018. Skript skrivna för tidigare versioner kommer sannolikt att fungera i senare versioner, men backporting kan vara problematiskt eftersom PowerShell har introducerat ett stort antal nya cmdlets under årens utveckling. Du kan ta reda på versionen av kommandoskalet som är installerat på datorn med PSVersion-egenskapen för den inbyggda variabeln $PSVersionTable:

$PSVersionTable.PSVersion

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Du kan också använda cmdleten:

Get-Variable -Name PSVersionTable –ValueOnly

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner
Samma sak görs med Get-Host-cmdleten. Faktum är att det finns många alternativ, men för att använda dem måste du lära dig PowerShell-programmeringsspråket, vilket vi kommer att göra i nästa artikel

Resultat av 

Microsoft har lyckats skapa ett riktigt kraftfullt skal med en bekväm integrerad miljö för att utveckla skript. Det skiljer sig från de verktyg som vi känner till i Unix-världen genom djup integration med operativsystemen i Windows-familjen, såväl som med programvara för dem och .NET Core-plattformen. PowerShell kan kallas ett objektorienterat skal eftersom cmdlets och användardefinierade funktioner returnerar objekt eller arrayer av objekt och kan ta dem som indata. Vi tycker att alla serveradministratörer på Windows borde äga det här verktyget: tiden har gått när de kunde klara sig utan kommandoraden. Ett avancerat konsolskal behövs speciellt på vår lågpris VPS som kör Windows Server Core, men det är en helt annan historia.

Vad är Windows PowerShell och vad äts det med? Del 1: Nyckelfunktioner

Endast registrerade användare kan delta i undersökningen. Logga in, Snälla du.

Vilka ämnen bör tas upp först i nästa artiklar i serien?

  • 53,2%Programmering i PowerShell123

  • 42,4%PowerShell98 funktioner och moduler

  • 22,1%Hur signerar man sina egna manus?51

  • 12,1%Arbeta med arkiv genom leverantörer (leverantörer)28

  • 57,6%Automatisera datoradministration med PowerShell133

  • 30,7%Programvaruhantering och inbäddning av PowerShell-körbara filer i tredjepartsprodukter71

231 användare röstade. 37 användare avstod från att rösta.

Källa: will.com

Lägg en kommentar