skript-tips

I begynnelsen var maskinkoden. Sedan tröttnade någon på att räkna i binär notation och uppfann assemblern, och därmed var bollen i rullning. Allt enklare språk utvecklades, med sikte på att ge programmeraren mer avancerade verktyg så att man kunde korta ned utvecklingstiden.

En grupp språk som dök upp på 1960-talet var skriptspråken, som automatiserade operatörernas arbete. De flesta skriptspråk kräver ingen kompilering, så det är enkelt att redigera ett skript och testköra det. Syntaxen är lätt att lära sig, och i moderna skriptspråk är funktionaliteten ändå fullt i klass med traditionella programmeringsspråk som C, Java eller Cobol.

Men enkelheten med den här typen av interpreterande högnivåspråk har ett pris: datorn presterar inte lika bra som den skulle kunna göra, eftersom den måste ägna resurser åt att tolka språket och sköta allt som sker bakom kulisserna. Fast det är sällan ett problem i dag – i takt med att datorer blir snabbare och billigare kan allt fler mjukvarusystem kan byggas i den här sortens språk. Frågan är bara: vilket skriptspråk är effektivast?

Niklas Goude – virtuos på Powershell


Kommandon i Powershell kallas cmdlets och namnges alltid som kombinationer av ett verb och ett substantiv, men många av dem har också ett eller flera alias. Till exempel heter kommandot för att kopiera en fil Copy-item, och det har aliasen copy respektive cp så att även de med kunskaper från kommandotolken eller Linux ska känna sig hemma.

– Microsoft hämtade många idéer från Linuxvärlden, och från skriptspråk som Visual Basic, Perl och Python, säger Niklas Goude, utbildare och seniorkonsulten på Truesec.

Powershell ISE

I Powershells ISE-miljö plockar du enkelt fram kodexempel och mallar för olika funktioner med ett musklick. Den kan också visa vilka metoder och filnamn som är tillgängliga allt eftersom du skriver din kod.

Niklas Goude, utbildare och konsult på Truesec är Sveriges enda Microsoft MVP inom Powershell. Han har också skrivit två böcker om språket.

Prestanda blir lidande
Objektorienteringen (enkelt uttryckt: ett sätt att dela upp komplexa problem i moduler) i Powershell gör att prestanda kan bli lidande om programmen arbetar med väldigt stora datamängder, men i gengäld går det smidigt och snabbt att utveckla i språket.

– Det ska vara kostnadseffektivt att utveckla, och programmen ska fungera bra. Powershell använder Dotnet-ramverket, alltså precis samma klasser som en utvecklare i C# skulle göra, med samma möjligheter. Det är bara det att du skriver i Powershell i stället.

– Alla språk har sina egenheter. Objektorienteringen orsakar en del svårigheter för en nybörjare, men man vinner på det när man vant sig, säger Niklas Goude.

Microsoft har arbetat målmedvetet med att ge sina olika produkter gränssnitt för att kunna administreras via Powershell.

Niklas berättar om hur språket har fått fotfäste:
– Exchange-utvecklarna var snabba, och 2008 fick Powershell fullt stöd för att automatisera Active Directory. VMware är ett av de bästa exemplen på tredjepartsprodukter med Powershell-integration, det fick de dessutom innan Microsofts egna produkt Hyper-V!

Sex år, tre versioner
Tidigare har en del buggar upptäckts i Powershell, men efter sex år och tre versioner är miljön stabil, beprövad och väl utbyggd. Utvecklarna har gjort många förbättringar i version 3. Särskilt har det grafiska utvecklingsverktyget ISE fått en rejäl översyn.

– I den första versionen var ISE inte tillräckligt bra jämfört med andra skripteditorer som Powergui och Powershell plus. Men i version 3 har ISE allt som du behöver – Powershellutvecklarna lyssnar på kunder och partners, berättar Niklas Goude.

Så går du vidare

  • Niklas Goude har en blogg där du även kan ladda ned hans bok ”Kom igång med Powershell” gratis: www.powershell.nu
  • Två andra bra böcker för dig som vill lära dig mer: ”Windows Powershell in action” av Bruce Payette och ”Windows Power­shell cookbook” av Lee Holmes.

Expertens Powershell-tips

  • Använd kommandot “Get-Help” för att ta reda på hur kommandon och koncept fungerar.
  • Innehållet i Windows-registret kan visas som filer i Powershell. Gör “dir HKLM:\” och titta runt. På samma sätt kan du se information om certifikat, alias och miljövariabler.
  • I version 3 kan Powershell integrera med webb-api:er via enkla kommandon. Vill du till exempel hämta en artists låtar från Spotify kan du använda kommandot “Invoke-RestMethod”.
  • Powershell kan exekvera kommandon och skript på en eller flera klienter i ditt nätverk. Om du till exempel vill se vilka processer som är igång på olika klienter kan du göra “Invoke-Command -ComputerName Dator1,Dator2 -ScriptBlock { Get-Process }”.
  • Microsoft har nyligen lanserat sökverktyget Script Explorer for Windows Powershell, som hjälper dig hitta kodexempel och guider som visar hur du kan utföra administrativa uppgifter med Powershell.