Lig jij ook al op straat?

Datalekken zijn sinds enkele jaren vrijwel dagelijkse kost en een hot topic. Wikileaks is er wereldberoemd mee geworden en afhankelijk van het type lek en de manier waarop de data verkregen is wordt er zowel gesproken van crimineel gedrag als van heldendaden. Helaas voor veel bedrijven en consumenten blijven datalekken niet voorbehouden aan overheden. Ook jij en ik kunnen er slachtoffer van zijn of worden.

Powershell Core 6.0 onder de loep

Begin januari dit jaar is PowerShell Core 6.0 door Microsoft vrijgegeven, aanleiding voor mij om dit eens onder de loep te nemen. Wat is er nieuw aan deze versie en hoe gebruik ik het, als het al zinvol is?

Allereerst is het belangrijk om uit te leggen dat PowerShell Core verschilt van Windows PowerShell. Zoals de naam al aangeeft is Windows PowerShell alleen beschikbaar voor Windows, PowerShell Core is cross-platform en kan je dus ook installeren op Linux of Mac. Wel zo gemakkelijk om één shell te gebruiken voor alle platforms! Daarbij kent de Core versie ook diverse mogelijkheden cross-platform remoting!

In een wereld waarin we in toenemende mate gebruik maken van IOT-toepassingen en naar de cloud bewegen kan een cross-platform shell van grote toegevoegde waarde zijn om de als maar toenemende grote aantallen te beheren en automatiseren. Denk bijvoorbeeld aan het managen van duizenden “containerized applicaties”. PowerShell Core 6.0 kan een belangrijke hulpmiddel betekenen voor de automatisering in de cloud. Zeker omdat veel beheerders al bekend zijn met de taal en methoden.

Hoe zit het met de compatibiliteit?

In het gebruik met PowerShell Core heb ik gemerkt dat er toch wel een aantal cmdlets ontbreken die hier en daar gebruikt zijn in mijn scripts. Naar mijn inschatting werkt ongeveer 1/5e van mijn scripts niet volledig in PowerShell Core. In de toekomst zal dit veranderen doordat Microsoft de compatibiliteit van PowerShell Core verder uitbreidt.

De PowerShell Editor

Windows PowerShell ISE is gebaseerd op… Windows PowerShell en maakt dus geen gebruik van PowerShell Core. Daarvoor kun je gebruik maken van Visual Studio Code. Laatstgenoemde kent veel meer en uitgebreidere ontwikkelaarsfunctionaliteiten en hulpmiddelen.
Zo voert het een aantal controles uit en geeft het geeft ook bestpractice-hits om je script leesbaar te maken en te houden, een voorbeeld daarvan zie je hieronder:

Na een korte wen-periode ben ik de Visual Studio Editor wel zeker gaan waarderen. Als je PowerShell Core wilt gebruiken, dan is het wel nodig om dit in te stellen via dit artikel, standaard maakt de editor gebruik van Windows PowerShell. Je kunt Visual Studio dus ook gebruiken voor Windows PowerShell.
Om Visual Studio standaard te openen met in de Powershell language kun je onderstaande regel toevoegen in de user settings:

“files.defaultLanguage”:

“powershell”

Dit maakt de Windows PowerShell ISE ervaring compleet!

De toekomst van Windows PowerShell en Core

Op dit moment heeft Microsoft geen plannen voor nieuwe Windows PowerShell functionaliteiten. Nog niet alle cmdlets zijn beschikbaar in PowerShell Core, er wordt hard gewerkt aan de compatibiliteit met Windows Powershell 5.1.
Microsoft heeft geen plannen voor nieuwe functionaliteiten voor Windows PowerShell, dit platform blijft voorlopig nog wel ondersteund door Microsoft via de Windows en Windows server ondersteuning.

De Core versie van PowerShell is nog geen volwaardige vervanger van Windows PowerShell. In de praktijk loop je soms tegen de beperkingen aan maar dat is beperkt. De uitbreiding van PowerShell naar andere platforms als Linux maakt dat PowerShell een sterke rol kan spelen in het automatiseren van diverse cloud diensten en toepassingen. Zo bevat de volgende versie uitbreidingen specifiek voor IOT, daarnaast wordt het gemakkelijker om de prestaties van bulk operaties te verbeteren.

Ik verwacht dat de PowerShell Core uiteindelijk Windows PowerShell zal overgroeien qua functionaliteit en de defacto standaard wordt. Daarom ontwikkel ik de scripts standaard in PowerShell Core om een migratie vanaf Windows PowerShell te voorkomen.