PowerShell is Open Source en PowerShell op Linux!

22 augustus 2016 om 17:33 Richard Diphoorn

Vorige week was een hoogtepunt voor elke PowerShell fanaat waar ook ter wereld. Namelijk, PowerShell is door Microsoft open source gemaakt en PowerShell werkt eindelijk op Linux! Voor mij persoonlijk is vooral het feit dat PowerShell opensource gemaakt is écht het bewijs dat Microsoft zijn bedrijfsvoering over een andere boeg gooit. PowerShell bestaat al heel wat jaartjes, dit jaar 10 jaar, en heeft een belangrijke plek ingenomen in de tool-set van veel systeembeheerders.

Waarom ook alweer PowerShell?

Echter zie ikzelf in de praktijk nog heel vaak dat beheerders geen gebruik maken van de toegevoegde waarde die PowerShell biedt. Hier “evangeliseer” ik dan ook hard voor. Het feit dat PowerShell nu ook op Linux en Mac OSX werkt, maakt het naar mijn mening een steeds belangrijker aspect in de skill-set van systeembeheerders. Het maakt het namelijk voor heel wat beheerders eenvoudiger om met 1 framework meerdere aspecten in hun omgeving te beheren. 


PowerShell is naast een interactieve commandline interface óók een scripttaal. Je kunt het dus gebruiken om direct op de commandline te werken, maar ook om (bijna) alles te automatiseren in je omgeving. PowerShell niet alleen tool op zich, maar bied een mechanisme om verschillende tooling aan elkaar te knopen. Bijvoorbeeld, als ik zou willen weten van welke groepen een gebruikersaccount lid is, kan ik whoami /groups gebruiken:

1

Stel dat ik heel snel wil controleren of ik lid ben van de builtin administrators groep, dan zou ik dit kunnen doen in PowerShell:

2

Dit is maar een klein en eenvoudig voorbeeld, maar het laat zien dat ik PowerShell cmdlets met andere tooling kan combineren. PowerShell is een taak gericht framework, en hierom is het feit dat PowerShell opensource gemaakt is zó belangrijk. Want nu kunnen PowerShell experts uit de community eindelijk de code gaan bewerken met hun eigen ideeën en bugfixes. Hierdoor wordt de toch al erg uitgebreide functionaliteit en werking van PowerShell enorm uitgebreid.

PowerShell op Linux

Naast de bekende shells op Linux (bash, csh, tcsh, scsh, pdksh, zsh, ash, etc.) kan een beheerder nu ook gebruik van van PowerShell als shell, met alle bijkomende voordelen. Het grootste voordeel zijn objecten. Windows is maakt namelijk gebruik van API’s ten opzichte van *nix besturingssystemen, welke vooral gebruik maken van tekst manipulatie voor systeemconfiguratie.
Bijvoorbeeld, deze API’s worden gebruikt om methoden en eigenschappen te gebruiken op specifieke objecten. Deze objecten worden gebruikt om iets op het besturingssysteem uit te voeren. Op *nix systemen moet voornamelijk tekst worden aangepast en gemanipuleerd. Dit klinkt eenvoudig, maar het kost vrij veel werk om tekst juist te kunnen manipuleren met bijvoorbeeld Perl. Met objecten wordt deze overhead verminderd, en is kennis van Perl niet/minder nodig.

Met dit in het achterhoofd, lijkt het dus in 1e instantie simpeler om *nix systemen te beheren door middel van PowerShell, uit de optiek van van een Windows beheerder. Tevens kunnen *nix beheerder gebruik gaan maken van de toegevoegde waarde die objecten bieden en hoeven zij ook geen/minder gebruik te maken van losse tooltjes, met elk hun eigen syntax. PowerShell is erop gebouwd om een consistente beleving te bieden.
Uiteraard heb ikzelf dit ook getest, en ik wil graag mijn 1e ervaring met jullie delen.

Installatie

De installatie is vrij eenvoudig. Op de volgende webpagina staan de instructies voor het installeren van PowerShell op Linux. Ik maak gebruik van Ubuntu versie 16.04:

https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md#ubuntu-1604

3

Ik heb vervolgens het package gedownload via deze link: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

De laatste releases zijn altijd op de volgende locatie te vinden:

https://github.com/PowerShell/PowerShell/releases/latest

Vervolgens heb ik getracht de benodigde dependencies te installeren, deze waren echter al aanwezig:

Hierna kan PowerShell worden geïnstalleerd. Dit duurde minder dan 10 seconden:

5

PowerShell kan na de installatie worden opgestart door in een terminal powershell te typen:

6

Werking

Hierna heb ik uiteraard even gespeeld met de shell. De beleving in de shell is vrijwel hetzelfde als op Windows. Als eerste heb ik bekeken hoeveel cmdlets er aanwezig zijn:

7

345 cmdlets lijkt niet zoveel, maar vergeet niet dat PowerShell op Linux draait bovenop .NET Core Framework. Dit framework biedt een beperkte set aan functionaliteit, maar wordt continue uitgebreid. Meer informatie over het .NET Core framework is hier te vinden: https://docs.microsoft.com/en-us/dotnet/articles/core/index en hier:https://www.dotnetfoundation.org/netcore

De huidige open source release is als een alpha versie uitgegeven door Microsoft, en wordt niét ondersteund door Microsoft zelf. Houdt hier dus rekening mee als je zelf PowerShell op Linux/Mac OSX wilt gaan gebruiken. Wel heeft Microsoft in de planning om stabiele releases te ondersteunen. Doordat het een alpha versie betreft, ontbreekt er uiteraard nog veel functionaliteit en zijn er nog aardig wat bugs aanwezig. Eens even kijken dus wat we onder andere aan functionaliteit hebben.

Eerst heb ik de versie bekeken:

8

Bovenstaande verschilt duidelijk van een Windows 10 desktop. Ik doe zelf mee in het insider programma van Microsoft, en heb momenteel versie 14905. Echter is vooral het regeltje PSEdition belangrijk:

9

Op Linux is dus duidelijk een uitgeklede versie van PowerShell geïnstalleerd. Maar, een simpel cmdlet zoals Get-Process werkt zoals verwacht:

10

Het ingebouwde PS commando werkt ook vanuit dezelfde shell:

11

PowerShell Remoting

Helaas werkt PS remoting nog niet, PowerShell crasht dan:

12

Bovenstaand issue is ook bekend, en wordt naar verwachting snel opgelost:

https://github.com/PowerShell/PowerShell/blob/master/docs/KNOWNISSUES.md#remoting-support

Scripting

Voor het scripten op Linux maak ik gebruik van Visual Studio Code. Het uitvoeren van scripts werkt zoals verwacht. Hier een voorbeeld van het script Get-DiskUsage van Lee Holmes. Ik heb niets in het script hoeven aanpassen, en het werkt:

13

Conclusie

Na wat snelle testen en spelerij, is het mooi om te zien dat PowerShell werkt op Linux. Dit is wel met haken en ogen, maar dat is te verwachten met een Alpha versie. Het doet mij denken aan PowerShell v1, waarin ook nog geen remoting en workflow zat. Ik denk echter dat dit van korte duur is, zeker met de hulp van de community en de commitment van Microsoft. Een mooie ontwikkeling, die mijn technisch hart zeker sneller doet kloppen!

Voor meer informatie zie de volgende resources:

De officiele aankondiging van Jeffrey Snover: https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/

De officiële aankondiging van het PowerShell Team: https://blogs.msdn.microsoft.com/powershell/2016/08/18/powershell-on-linux-and-open-source-2/

Een video vol met demo’s wat je met PowerShell op Linux kunt doen, en het verhaal van Jeffrey Snover achter het open source maken van PowerShell: https://channel9.msdn.com/Blogs/hybrid-it-management/PowerShell-on-Linux-and-Open-Source

De video waarop het moment te zien is dat het PowerShell Team PowerShell open source maakt: https://www.youtube.com/watch?v=1uGyswOOPdA

En uiteraard de officiële thuisbasis voor PowerShell: http://microsoft.com/powershell

En natuurlijk, als er vragen zijn over PowerShell, Automation, Azure of andere Microsoft gerelateerde technieken, kun je natuurlijk altijd contact opnemen met Platani!

0 reacties

Reageer