Temauke: Windows Powershell

Vi starter nå en ny temauke på ITpro. Denne gangen er det Powershell som er i fokus.

Jeg har fått gleden av å skrive noen artikler om PowerShell i dagene som kommer sammen med Jan Egil Ring. Vi starter litt forsiktig med bakgrunnen for PowerShell, og går over til praktiske eksempler underveis. Jeg håper du får utbytte av denne serien, og tar gjerne i mot tips på hva du vil høre mer om.

Hva er PowerShell?

Det er ikke å komme bort fra at kommandolinja og scriptmiljøet i Windows har hatt forbedringspotensiale. Windows har jo fokusert på det grafiske grensesnittet og kommandolinja og automatiseringsmulighetene via script har i en årrekke kommet lenger bak i køen. Løsningen frem til i dag har vært mange uavhengige grensesnitt som ikke har medført stor gevinst på tvers av hverandre. Kommandoer har ikke hatt de samme parametrene, og har de hatt de samme parametrene, har ikke disse nødvendigvis oppført seg likt.

I starten av 2000 gjennomførte Microsoft en spørreundersøkelse, og fant ut at det var på tide å gjøre noe med dette. De etablerte ett prosjekt (med navn “Kermit”, visstnok ikke etter frosken) som skulle se på hvordan Windows skulle få ett bedre shell. Dette fordi shellet ble identifisert som det mest kritiske å forbedre. Samtidig jobbet Jeffrey Snover med WMI teamet i Windows, og han hadde noen tanker om hvordan WMI skulle gjøre tilgjenglig blant administratorer flest (og ikke bare utviklere). Dette gjorde at Jeffrey lekte seg med ett objektbasert shell basert på .NET. De som jobbet med Kermit prosjektet fikk dette presentert, og ikke lenge etter var Jeffrey en del av dette teamet. Den første virkelige demonstrasjonen av dette var i November 2003 under PDC konferansen i Los Angeles. Jeg var så heldig å møte teamet der, og fikk presentert det som da var kalt Monad. Å se et objektorientert shell som håndterte Active Directory og registry på samme måte som filsystemet gjorde meg veldig nysgjerrig.

Etter hvert som Microsoft har tatt stegene inn i serverrommet, har automatiseringsbehovet blitt større og større. Dette gir ett behov for et komplett ”shell” og scriptingmiljø. Med PowerShell har ikke bare Windows fått et ok miljø – men Windows har fått det beste! Her er miljøet som er like interaktivt som BASH, like programmerbart som Perl og like produksjonsorientert som AS400 CL/VMS DCL. Med andre ord – det beste av det beste – og bedre blir det. PowerShell er nemlig bygd på .NET, og tilfører objekter til miljøet. Med andre ord; når PowerShell returnerer en liste over prosessene som kjører på ei maskin, er det ikke bare ei liste med ”død” tekst. Det er faktiske referanser til prosessene. Det betyr at vi kan jobbe med utdataene på en helt ny måte, hvor vi kan aktivt utføre handlinger på utdataene vi får. For eksempel kan vi enkelt beregne hvor store et gitt filutvalg er, eller vi kan enkelt filtrere basert på egenskaper ved objektene som blir returnert. Dette er selvsagt noe man kan gjøre i kommandoer av ulikt slag – nytt med PowerShell er at det samles i en plattform hvor mulighetene ligger i motoren under. Kort fortalt, kan du filtrere ut filer som er større enn 1 GB, kan du også filtrere ut postbokser i Exchange som er større enn 1 GB. Kan du identifisere filer som ikke er benyttet på ett år, kan du også filtrere brukere som ikke har logget på i løpet av ett år.

PowerShell tilfører altså mye nytt til Windowsmiljøet, men i tillegg lar det deg fortsatt benytte ”gamle” mekanismer og metoder. Dette er flott, da det gir deg mulighet for å ta være på alt det du har utviklet av kunnskaper frem til i dag. Script du allerede har utviklet i VBScript, batchjobber du har utviklet – alt dette kan du fortsatt ta med deg. Men i tillegg får du førsteklasses adgang til .NET rammeverket på en måte du ikke har hatt anledning til tidligere. Og ikke minst en enhetlig kommandolinje og scriptingmiljø i PowerShell.

PowerShell har ett aktivt miljø av bidragsytere – du finner mange eksempler på Internett. Det er også slik at de nye server applikasjonene fra Microsoft benytter PowerShell til administrering. Like intressant er det å observere at også andre selskaper ser nytten av PowerShell til administrering, og for eksempel VmWare og F5 Networks. I tillegg finnes det et rikt økosystem rundt PowerShell.

Jeg ser frem til å skrive artikler om PowerShell fremover sammen med Jan Egil Ring. Følg med, og få praktiske eksempler.

Happy scripting!

Kommentarer