Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

Historiskt har kommandoradsverktyg i Unix-system utvecklats bÀttre Àn i Windows, men med nya lösningar har situationen förÀndrats.

Windows PowerShell gör det möjligt för systemadministratörer att automatisera de flesta rutinuppgifterna. Med den kan man Àndra instÀllningar, stoppa och starta tjÀnster samt utföra underhÄll av de flesta installerade applikationer. Att betrakta det blÄ fönstret som ytterligare en kommandotolk skulle vara felaktigt. Denna ansats Äterspeglar inte kÀrnan i de innovationer som Microsoft har föreslagit. I sjÀlva verket Àr möjligheterna med Windows PowerShell mycket bredare: i en serie korta artiklar kommer vi att försöka förstÄ hur Microsofts lösning skiljer sig frÄn de mer vÀlkÀnda verktygen.

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

Huvudfunktioner 

Naturligtvis Àr Windows PowerShell först och frÀmst en kommandotolk med skriptsprÄk, ursprungligen skapad pÄ .NET Framework-plattformen och senare pÄ .NET Core. Till skillnad frÄn skal som tar emot och returnerar textdata, arbetar Windows PowerShell med .NET-klasser, vilka har egenskaper och metoder. PowerShell lÄter anvÀndare utföra vanliga kommandon och ger tillgÄng till COM-, WMI- och ADSI-objekt. Den anvÀnder olika lagringslösningar, sÄsom filsystemet eller Windows-register, dÀr sÄ kallade leverantörer (providers) skapats för att fÄ Ätkomst. Det Àr vÀrt att notera möjligheten att integrera körbara komponenter av PowerShell i andra applikationer för att utföra olika operationer, Àven via grafiska grÀnssnitt. Det Àr ocksÄ korrekt att mÄnga Windows-applikationer erbjuder Ätkomst till sina administrationsgrÀnssnitt via PowerShell. 

Windows PowerShell lÄter anvÀndare:

  • Ändra instĂ€llningar för operativsystemet;
  • Hantera tjĂ€nster och processer;
  • Konfigurera roller och komponenter pĂ„ servern;
  • Installera mjukvara;
  • Hantera installerad programvara via sĂ€rskilda grĂ€nssnitt;
  • Integrera körbara komponenter i tredje parts program;
  • Skapa skript för att automatisera administrationsuppgifter;
  • Arbeta med filsystemet, Windows-register, certifikatlagring, osv.

Skal och utvecklingsmiljö

Windows PowerShell finns i tvĂ„ former: förutom konsol-emulatorn med kommandotolk finns det en integrerad skriptmiljö (Integrated Scripting Environment — ISE). För att fĂ„ tillgĂ„ng till kommandotolken, vĂ€lj helt enkelt rĂ€tt genvĂ€g i Windows-menyn eller kör powershell.exe frĂ„n fönstret "Kör". En blĂ„ ruta visas pĂ„ skĂ€rmen, som markant skiljer sig i funktioner frĂ„n den förhistoriska cmd.exe. DĂ€r finns automatiskt fullföljande och andra funktioner som Ă€r bekanta för anvĂ€ndare av kommandotolkar för Unix-system.

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

För att arbeta med tolken behöver du komma ihÄg nÄgra tangentbordsgenvÀgar:

  • Pil upp och ner blĂ€ddrar igenom historiken för att upprepa tidigare inmatade kommandon;
  • Pil höger i slutet av raden skriver om föregĂ„ende kommando tecken för tecken;
  • Ctrl+Home tar bort text frĂ„n markörens position till radens början;
  • Ctrl+End tar bort text frĂ„n markören till radens slut.

F7 visar ett fönster med inmatade kommandon och lĂ„ter dig vĂ€lja ett av dem. I konsolen fungerar Ă€ven musmarkering, kopiera/klistra, placering av markören, borttagning, backspace — allt som vi gillar.

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Windows PowerShell ISE Àr en fullskalig utvecklingsmiljö med en flikstödjande och syntaxmarkering kodredigerare, kommandobygge, inbyggd debugger och andra programmerarglÀder. Om du skriver ett bindestreck efter kommandots namn i utvecklingsmiljön, fÄr du en rullgardinslista med alla tillgÀngliga parametrar med typangivelse. Du kan starta PowerShell ISE antingen via en genvÀg frÄn systemmenyn eller med hjÀlp av den körbara filen powershell_ise.exe.

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

Cmdlets 

I Windows PowerShell har det dykt upp sĂ„ kallade cmdlets. Dessa Ă€r specialiserade .NET-klasser som har en mĂ„ngfald av funktionalitet. De namnges enligt principen "Verb-Objekt" (eller "Verb-Noun", om det passar dig bĂ€ttre), och den bindning som separeras med ett bindestreck pĂ„minner om predikat och subjekt i naturliga sprĂ„ks meningar. Till exempel betyder Get-Help bokstavligen "HĂ€mta-HjĂ€lp" eller i sammanhanget av PowerShell: "Visa-HjĂ€lp". I grund och botten Ă€r det en analogi till kommandot man i Unix-system, och manualer i PowerShell ska begĂ€ras pĂ„ detta sĂ€tt, snarare Ă€n att anropa cmdlets med flaggan —help eller \/?. Glöm inte den online-dokumentation som finns för PowerShell: Microsoft har en ganska omfattande sĂ„dan.

Förutom Get anvÀnds andra verb (och inte bara verb, strikt taget) i kommandon för att beteckna ÄtgÀrder. I listan nedan presenterar vi nÄgra exempel:

Add — lĂ€gga till;
Rensa — rensa;
Aktivera — slĂ„ pĂ„;
Avaktivera — slĂ„ av;
Ny — skapa;
Ta bort — radera;
StĂ€ll in — definiera;
Start — starta;
Stoppa — stoppa;
Exportera — exportera;
Importera — importera.

Det finns systemkommandon, anvĂ€ndarkommandon och valfria kommandon: som resultat av utförandet returnerar alla ett objekt eller en lista med objekt. De Ă€r inte skiftlĂ€geskĂ€nsliga, det vill sĂ€ga, ur tolkarens perspektiv finns det ingen skillnad mellan Get-Help och get-help. För att separera anvĂ€nds tecknet ‘;’, men det ska anvĂ€ndas obligatoriskt endast om flera kommandon utförs pĂ„ en rad. 

Windows PowerShell-kommandon grupperas i moduler (NetTCPIP, Hyper-V, etc.), och för att söka efter objekt och ÄtgÀrder finns kommandot Get-Command. Du kan visa hjÀlp för detta sÄ hÀr:

Get-Help Get-Command

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

Som standard visar kommandot en kort hjÀlp, men parametrar (argument) kan skickas till kommandona om det behövs. Med dem kan du till exempel fÄ detaljerad hjÀlp (parameter -Detailed) eller fullstÀndig hjÀlp (parameter -Full), samt visa exempel (parameter -Examples):

Get-Help Get-Command -Examples

HjĂ€lpen i Windows PowerShell uppdateras med kommandot Update-Help. Om kommandoraden blir för lĂ„ng kan kommandots argument flyttas till nĂ€sta rad genom att skriva funktionssymbolen ‘`’ och trycka pĂ„ Enter – att bara avsluta kommandot pĂ„ en rad och fortsĂ€tta pĂ„ en annan fungerar inte.

Nedan ger vi nÄgra exempel pÄ vanliga kommandon: 

Get-Process — visa processerna som körs i systemet;
Get-Service — visa tjĂ€nster och deras status;
Get-Content — visa innehĂ„llet i filen.

För ofta anvĂ€nda kommandon och externa verktyg finns det korta synonymer i Windows PowerShell — alias (frĂ„n engelska Alias). Till exempel, dir — alias Get-ChildItem. Det finns Ă€ven synonymförteckningar och motsvarigheter till kommandon frĂ„n Unix-system (ls, ps, etc.), och kommandot Get-Help kallas med kommandot help. Den kompletta synonymlistan kan visas med hjĂ€lp av kommandot Get-Alias:

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

Skript, funktioner, moduler och PowerShell-sprÄket

Windows PowerShell-skript lagras som vanliga textfiler med filÀndelsen .ps1. De kan inte köras med dubbelklick: man mÄste högerklicka för att fÄ fram kontextmenyn och vÀlja "Kör i PowerShell". FrÄn konsolen mÄste man antingen ange den fullstÀndiga sökvÀgen till skriptet eller navigera till rÀtt katalog och skriva filnamnet. Körning av skript begrÀnsas ocksÄ av systemets policy, och för att kontrollera aktuella instÀllningar kan man anvÀnda cmdleten Get-ExecutionPolicy, som ger ett av följande vÀrden:

Restricted — körning av skript förbjuden (som standard);
AllSigned — endast körning av signerade skript frĂ„n betrodda utvecklare tillĂ„ten;
RemoteSigned — körning av signerade och egna skript tillĂ„ten;
Unrestricted — körning av alla skript tillĂ„ten.

Administratören har tvĂ„ handlingsalternativ. Det mest sĂ€kra alternativet innebĂ€r att skripten signeras, men det Ă€r ganska komplicerat — vi kommer att gĂ„ igenom det i kommande artiklar. Nu vĂ€ljer vi den enklaste vĂ€gen och Ă€ndrar policyn:

Set-ExecutionPolicy RemoteSigned

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
PowerShell mÄste köras som administratör för detta, Àven om man med hjÀlp av en speciell parameter kan Àndra policyn Àven för den aktuella anvÀndaren.

Skript skrivs i ett objektorienterat programmeringssprÄk, vars kommandon namnges enligt samma princip som de tidigare nÀmnda cmdlets: "Verktyg-Objekt" ("Verb-Noun"). Huvudsyftet Àr automatisering av administrationsuppgifter, men det Àr ett fullvÀrdigt tolkat sprÄk med alla nödvÀndiga konstruktioner: villkorssatser, loopar, variabler, arrayer, objekt, felhantering etc. Vilken textredigerare som helst kan anvÀndas för att skriva skript, men det Àr enklast att starta Windows PowerShell ISE.

Man kan skicka parametrar till skriptet, göra dem obligatoriska och Àven ange standardvÀrden. Dessutom lÄter Windows PowerShell en skapa funktioner och anropa dem precis som cmdlets: detta görs med konstruktionen Function och klamrar. Ett skript med funktioner kallas ett modul och har filÀndelsen .psm1. Moduler mÄste lagras i kataloger som definieras i PowerShells miljövariabler. Dessa kan ses med följande kommando:

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

Köer

I det senaste exemplet anvÀnde vi en konstruktion som Àr bekant för anvÀndare av Unix-system. I Windows PowerShell tillÄter det vertikala strecket ocksÄ att utdata frÄn ett kommando skickas som ingÄng till ett annat, men det finns en betydande skillnad i implementationen av röret: det handlar hÀr inte lÀngre om en mÀngd tecken eller nÄgon text. Inbyggda cmdlets eller anvÀndardefinierade funktioner returnerar objekt eller matriser av objekt och kan Àven ta emot dem som ingÄng. Precis som i Bourne shell och dess mÄnga efterföljare förenklar PowerShell utförandet av komplexa uppgifter med hjÀlp av rör.

Det enklaste exemplet pÄ ett rör ser ut sÄ hÀr:

Get-Service | Sort-Object -property Status

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Först utförs cmdlet Get-Service, och sedan skickas alla erhÄllna tjÀnster till sortering efter egenskapen Status till cmdlet Sort-Object. Vilken parameter resultatet frÄn den föregÄende delen av röret skickas till beror pÄ dess typ - vanligtvis Àr det InputObject. Detta Àmne kommer att diskuteras mer i detalj i en artikel om programmeringssprÄket PowerShell. 

Om man vill kan man fortsÀtta kedjan och skicka resultatet frÄn Sort-Object till en annan cmdlet (de kommer att köras frÄn vÀnster till höger). För övrigt finns en konstruktion för sidbunden utmatning som alla Unix-anvÀndare kÀnner till: 

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

Köra uppgifter i bakgrunden 

Det Àr ganska ofta nödvÀndigt att köra ett kommando i bakgrunden sÄ att man inte behöver vÀnta pÄ resultatet i sessionen. I Windows PowerShell finns det flera cmdlets för detta ÀndamÄl:

Start-Job — starta en bakgrundsuppgift;
Stop-Job — stoppa en bakgrundsuppgift;
Get-Job — visa listan över bakgrundsuppgifter;
Receive-Job — visa resultatet av en bakgrundsuppgifts körning;
Remove-Job — ta bort en bakgrundsuppgift;
Wait-Job — flytta bakgrundsuppgiften tillbaka till konsolen.

För att starta en bakgrundsuppgift anvÀnder vi cmdlet Start-Job och anger kommandot eller uppsÀttningen av kommandon inom klamrar:

Start-Job {Get-Service}

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Bakgrundsuppgifter i Windows PowerShell kan manipuleras genom att kÀnna till deras namn. Först lÀr vi oss att visa dem:

Get-Job

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Nu visar vi resultatet av uppgiften Job1:

Receive-Job Job1 | more

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Allt Àr ganska enkelt.

FjÀrrkörning av kommandon

Windows PowerShell gör det möjligt att köra kommandon och skript inte bara pÄ lokala datorer, utan Àven pÄ fjÀrrdatorer och till och med pÄ grupper av maskiner. Det finns flera sÀtt att göra detta pÄ:

  • MĂ„nga cmdlets har parametern -ComputerName, men med denna metod kan man till exempel inte skapa en pipeline;
  • Cmdleten Enter-PSSession lĂ„ter skapa en interaktiv session pĂ„ en fjĂ€rrdator; 
  • Med cmdleten Invoke-Command kan man köra kommandon eller skript pĂ„ en eller flera fjĂ€rrdatorer.

Versioner av PowerShell

Sedan den första versionen slÀpptes 2006 har PowerShell genomgÄtt stora förÀndringar. 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. Den senaste versionen 6.2 slÀpptes den 10 januari 2018. Skript som skapades för tidigare versioner kommer med stor sannolikhet att fungera i senare versioner, men bakÄtkompatibilitet kan vara problematisk, eftersom PowerShell har införlivas mÄnga nya cmdlets genom Ären. För att ta reda pÄ versionen av kommandotolken som Àr installerad pÄ datorn kan man anvÀnda egenskapen PSVersion i den inbyggda variabeln $PSVersionTable:

$PSVersionTable.PSVersion

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Man kan ocksÄ anvÀnda cmdleten:

Get-Variable -Name PSVersionTable –ValueOnly

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner
Samma sak görs med cmdleten Get-Host. Egentligen finns det mÄnga alternativ, men för att anvÀnda dem behöver man studera programmeringssprÄket PowerShell, vilket vi kommer att göra i den följande artikeln. 

Sammanfattning 

Microsoft har lyckats skapa en verkligt kraftfull kommandotolk med en anvÀndarvÀnlig integrerad miljö för skriptutveckling. Den skiljer sig frÄn de verktyg vi Àr vana vid i Unix-vÀrlden genom sin djupa integration med operativsystemen i Windows-familjen samt med mjukvaran för dem och .NET Core-plattformen. PowerShell kan kallas ett objektorienterat skal, eftersom cmdlets och anvÀndardefinierade funktioner returnerar objekt eller objektarrayer och kan ta emot dem som indata. Vi tycker att alla systemadministratörer pÄ Windows bör behÀrska detta verktyg: tiden Àr förbi dÄ de kunde klara sig utan kommandoraden. Den avancerade kommandotolken Àr sÀrskilt nödvÀndig pÄ vÄra prisvÀrda VPS:er som körs under Windows Server Core, men det Àr en helt annan historia.

Vad Àr Windows PowerShell och hur anvÀnds det? Del 1: grundlÀggande funktioner

Endast registrerade anvÀndare kan delta i omröstningen. Logga in, tack.

Vilka Àmnen bör vi ta upp först i kommande artiklar i serien?

  • 53,2%Programmering i PowerShell123

  • 42,4%Funktioner och moduler i PowerShell98

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

  • 12,1%Arbete med lagringsutrymmen genom leverantörer (providers)28

  • 57,6%Automatisering av datoradministration med PowerShell133

  • 30,7%Hantering av mjukvara och inbĂ€ddning av exekverbara komponenter i PowerShell i tredjepartsprodukter71

231 anvÀndare röstade. 37 anvÀndare avstod.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster