Stop steroïden in je PoSH ISE

Door ralpje op maandag 27 oktober 2014 22:15 - Reacties (7)
Categorieën: ISESteroids, Powershell, Views: 3.871

Ik maak in m'n dagelijks werk veel gebruik van Powershell. Of het nu is voor het beheren van Office365, Exchange of ActiveDirectory of het genereren van overzichten voor managementinformatie, PoSH is de eerste (en meestal ook de enige) tool waar ik op teruggrijp.
Standaard wordt in Windows naast PoSH ook de Integrated Sript Editor (ISE) geïnstalleerd, waarmee PoSH-scripts kunnen worden gemaakt en getest. Die ISE mist echter wel de uitgebreidere functionaliteit dat je gewend bent van 'echte' scripteditors zoals Visual Studio. Daar is echter een oplossing voor: ISESteroids.
ISESteroids gebruik ik al sinds versie 1. De versie 2 die nu in ontwikkeling is geeft echter heel veel redenen om er een blogpost aan te wijden!

Misschien wel het grootste USP van ISESteroids is de prijs. Voor de 'professional' license betaal je ¤99. De mooiste functies zitten echter in de 'enterprise' uitvoering, die voor ¤189 aangeschaft kan worden. Wie nu echter de huidige 1.x-versie aanschaft voor ¤99, krijgt bij het final worden van 2.0 de upgrade naar enterprise gratis. Voor Hollanders natuurlijk een uitstekende deal ;)

Het installeren van ISESteroids is eenvoudig: download de zip-file en kopieer de inhoud naar één van de modules folders. Geen idee wat je modules-folders zijn? PoSH to the rescue.

code:
1
$env:PSModulePath -split ';'


Na het kopieren van de files kun je ISESteroids in je PoSH ISE starten:

code:
1
start-steriods


Uiteraard is het handig als dit standaard gebeurt bij het starten van ISE. Handig: in ISE Steroids kun je eenvoudig één van de profile-scripts openen: voor de console, voor ISE of voor beiden. Uiteraard wordt er ook onderscheid gemaakt tussen het profile van de huidige gebruiker, of die voor alle gebruikers. Door het start-steroids commando aan de 'all users (ISE)' profile toe te voegen, wordt ISESteroids nu automatisch gestart bij het openen van ISE.
ISESteroids profile scripts

De opvallendste wijziging zijn de extra toolbars die beschikbaar komen.
ISESteroids toolbar
Al die extra knoppen bieden uiteraard extra functies. Een deel daarvan zet ik hier even snel op een rijtje, de komende tijd zal ik bepaalde functies apart in een blogpost toelichten.

Eén van de dingen waar ik zelf erg blij mee ben is de versioning. Je kunt het versioning scherm activeren via de toolbar-knop met het klokje. Als versioning actie is verschijnt een extra menu aan de rechterkant van het scherm, waarin de verschillende versies van het script waarin je werkt getoond worden.
ISESteroids versioning
In auto-mode wordt bij het opslaan van je script direct een nieuwe 'minor' versie gemaakt, je kunt via 'add new version' zelf een major version opslaan. Uiteraard is het mogelijk om notities aan een bepaalde versie toe te voegen of via een compare snel een overzicht te krijgen van de wijzigingen sinds een bepaalde versie.
De verschillende versies worden opgeslagen in een .zip file op de locatie van het script. Als dit dus op een netwerkdrive is kun je op deze manier eenvoudig met verschillende mensen aan hetzelfde script werken en ondertussen alle wijzigingen bijhouden.

Wellicht de meest uitgebreide functie in ISESteroids is de 'refactor script' knop. Met deze knop wordt je script in één klap bijna volledig herschreven en vooral leesbaar gemaakt voor anderen: overbodig spaties worden verwijderd, line endings worden genormaliseerd, er wordt case-correct gedaan voor commands en paramaters, script blocks worden automatisch ingesprongen, etc. Via de 'advanced' tab bepaal je zelf wat er gebeurd, op de 'basic' tab kun je alle acties die je ingeschakeld hebt direct allemaal starten voor je script.
ISESteroids refactoring

Mensen die veel in grotere stukken code werken zullen veel baat hebben bij de ScriptMap. Dit is een visuele weergave van je plek in het script; het geeft aan de rechterzijde met een groene highlight aan waar in je code je momenteel beeld. Een mouse-over geeft een ingezoomde weergave van dat stuk code zodat je makkelijk kunt navigeren.
ISESteriods scriptmap

Intelliselect is een functie die in de praktijk ook erg nuttig blijkt, bijvoorbeeld om snel een bepaalde function uit te commenten.
Als de cursor zich in de code bevindt wordt met de toetscombo cntrl+Q het actuele element geselecteerd.
ISESteroids IntelliSelect
Door nogmaals op cntrl+Q te drukken wordt het bovenliggende element geselecteerd... Enzovoort.
ISESteroids IntelliSelect
Als je eenmaal het gewenste codeblock geselecteerd hebt, kun je cntrl+shit+b de selectie uitcommenten.
ISESteroids comment

Heb je de behoefte om de naam van een variabele in je hele script aan te passen? Plaats je cursor ergens in je script in de variabele en druk op F2. Hiermee wordt de variable en alle voorkomende instances ervan geselecteerd.
ISESteroids IntelliSelect
Door nu simpelweg de nieuwe naam voor te typen wordt deze overal in het script aangepast.
ISESteroids IntelliSelect

In bovenstaande screenshots zie je dat voor de functions in het script wordt aangeven hoe vaak de betreffende function gebruikt wordt. Door te klikken op deze waarde wordt direct naar deze 'references' genavigeerd.
ISESteroids references
Zijn er meerdere references, dan worden deze in een lijst weergeven met de bijbehorende code-regel en kan vanaf daar doorgeklikt worden naar de betreffende regel.
ISESteroids reference list

Dit zijn nog maar een paar voorbeelden van de praktische zaken die ISESteroids aan je PoSH ISE toevoegd. In komende blogposts zal ik een aantal functies nog extra onder de loep nemen!