Powershell ISESteroids
Powershell is sinds Windows server 2008 aanwezig op de meeste Windows server en client systemen. Powershell komt in 2 smaken, Powershell (de command-line) en Powershell ISE. Powershell ISE is Microsoft’s default IDE (Integrated Development Environment) voor Powershell en geeft de gebruiker veel meer mogelijkheden dan de CLI. Voor iedere gebruiker die vervolgens nog meer wilt is er ISESteroids. ISESteroids is als het ware een plugin voor de default Powershell ISE editor maar geeft nog veel meer opties en professionele functionaliteiten dan ISE. In deze post gaan we kijken naar de opties die ISESteroids te bieden heeft en bekijken we diverse tips & trucks om nog sneller en makkelijker te kunnen scripten. Let’s code!
Powershell ISESteroids is als het ware een extension voor Powershell ISE en is dus geen separate tool. ISESteroids is ontwikkeld door Dr. Tobias Weltner en is in mijn bescheiden mening een van de betere Professionele Powershell IDE tools. Powershell Plus is mooi maar biedt lang niet zoveel als ISESteroids. VSCode (Visual Studio Code) is fantastisch en gratis maar persoonlijk ben ik hier nog niet zo goed in thuis. Ik vermoed dat het ook net wat minder functionaliteiten biedt dan ISESteroids. Powershell Studio is een fantastische editor met de meester opties en een prachtige interface maar helaas ook ontzettend duur (399 USD). ISESteroids kost nog geen 37 USD (persoonlijk gebruik) en 178 USD voor zakelijk gebruik. De kosten vallen reuze mee, maar het beste is…je betaald dit bedrag voor een lifetime licentie. Geen jaarlijkse renewals, geen abonnementskosten. Gewoon eenmalig betalen en altijd genieten van de voordelen die ISESteroids te bieden heeft. En dat zijn er nogal wat. Bijvoorbeeld:
- Code generatie / debugging
- Geavanceerde zoek en vervang opdrachen
- Maken van moderne User Interfaces
- Beveiliging van je code
- Compileren als EXE (eventueel incl. signing opties)
- Speciale vensters voor hulp, variabelen etc.
Bovenstaande voordelen zijn slechts enkele voordelen die ISESteroids te bieden heeft. Al met al wordt je Powershell ontwikkelomgeving een stuk krachtiger, en wij gaan kijken hoe!
Installeer ISESteroids
Het installeren van ISESteroids kan, zoals met de meeste Powershell modules op 2 manieren. Manueel, door de software te downloaden (let op, je kunt ISESteroids gratis 10 dagen proberen met de full functional trail versie). Of je gebruikt het Powershell commando (v.a. Powershell V5 of na installatie van de PowerShellGet module).
Install-Module -Name ISESteroids -Scope CurrentUser -Force |
Bovenstaande code installeerd ISESteroids voor de “current user”. Zonder de “Scope” optie installeerd ISESteroids voor iedere user maar hiervoor moet Powershell wel gestart zijn met elevated privileges (als Administrator). Je zou dit ook vanuit een script kunnen forceren:
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole ([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } Install-Module -Name ISESteroids -Scope CurrentUser -Force |
Nu ISESteroids geinstalleerd is kun je ISESteroids uitvoeren vanuit ISE middels het volgende commando:
Start-Steroids |
Als je de licentie ontvangen hebt voor ISESteroids is deze op diverse manieren te activeren. Het makkelijkste is om de licentie te plaatsen in de folder “$env:appdata\ISESteroids\License”. Dit is meestal de folder in het pad “C:\Users\%USERNAME%\AppData\Roaming\ISESteroids\License”
Voor het upgraden (alleen voor gelicenseerde ISESteroids) gebruik je het commando:
Update-Module -name isesteroids |
Mocht je willen dat Powershell ISESteroids meteen start met het starten van ISE dan plaats je het start commando “start-steroids” in je Powershell profile. Vraag via Powershell eerst je profiel op:
echo $profile |
Meestal is dit vergelijkbaar met het pad “C:\Users\%USERNAME%\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1”
Als het “Microsoft.PowerShellISE_profile.ps1” bestand al bestaat pas je deze aan, en zo niet dan maak je het bestand eerst aan. De code die dan altijd als eerste (bovenaan) in het bestand plaatst is:
Start-Steroids Start-Sleep -Second 2 |
De “sleep” timer Zetten we erin zodat ISESteroids alle voorgeconfigureerde modules (als je die hebt) kan starten voordat hij zichtbaar wordt..
Tot zover de eerste tips. Nu gaan we eindelijk ISESteroids bekijken.
ISESteroids User Interface
De user interface van ISESteroids ziet er als volgt uit:

Zie je het verschil. Rechts staat de traditionele Powershell ISE en links Powershell ISE met de ISESteroids extensie geladen:

Het grootste zichtbare verschil zijn de 3 extra toolbars:

Wanneer we echter gaan werken met Powershell code zien we nog 2 belangrijke nieuwe features:

1. Toolbar 1
De eerste toolbar is de “toggle” toolbar waarmee verschillende zaken in- en uitgeschakeld kunnen worden. Hieronder zie je wat aan of uit gezet kan worden (van links naar rechts):
- Navigation Bar (item 4 bovenaan script venster)
- Command add-on (aan rechterzijde van de editor)
- Variable monitor (aan rechterzijde – laat de inhoud van verschillende custom / system variable zien)
- Help Addon (aan rechterzijde – toont help items door te klikken op code)
- MagneticNote (aan rechterzijde – maakt het mogelijk notities aan onderdelen van de code te “plakken”)
- AutoFormat (aan rechterzijde – geeft je de optie om je code automatisch netjes op te maken)
- Project Management (aan rechterzijde – geeft je de mogelijkheid om project gerelateerde zaken zoals “slides” en “decks” toe te voegen)
- Script Versioning Management (aan rechterzijde – Geeft je de mogelijkheid om script revisie toe te passen en om dus meerdere versies van je script op te slaan)
2. Toolbar 2
Deze tweede toolbar biedt de gebruiker een aantal directe acties. We bespreken de volgende opties:

- 1. Automaticly Align Braces – Deze button allignt de opening en closing braces zodat de code weer netjes uitgelijnd wordt.
- 2. Highlight buttons – Met deze buttons kun je kiezen welke language elementen gearceerd worden. In de gehele code, de actuele regel of nergens.
- 3. Tracking – Deze button activeert code tracking (tracks changes)
- 4. Vertical Guidelines – Plaats verschillende vertical hulplijnen (in diverse kleuren)
- 5. Auto Indentatrion – Deze opties zorgt ervoor dat “indentation tabs” automatisch worden toegepast tijdens het typen.
- 6. Visable Whitespace – Toont horizontale stippellijnen op de plaats van whitespace.
- 7. Word Wrap – Zorgt ervoor dat regels volledig leesbaar zijn zonder horizontaal te scrollen doos ze tijdig een zachte line-break te geven (regels sluiten weer aan als word wrap wordt uitgeschakeld).
- 8. Autoselection – Door op de button te klikken worden verschillende regio’s van je code geselecteerd.
- 9. Duplicates – Dupliceert de huidige selectie
- 10. Move line – Deze buttons verplaatsen de volledige regel omhoog of omlaag.
- 11. Block Toggle – Deze buttons maken het mogelijk om een deel van de code of om alle 1st en 2nd level blokken in- en uit te klappen.
- 12. Comment Selection – Deze button maakt een comment van je huidige selectie (om un-comment de selectie).
3. Toolbar 3
De derde toolbar kent de volgende indeling:

- 13. Snippet Editor – Open de editor om code snippets te maken en gebruiken
- 14. ISE Profile Editor – Open en bewerk je ISE startup profiel
- 15. Bookmark Navigator – Jump naar een reeds gemaakte comment bookmark
- 16. LiteralView – Zet LiteralView aan of uit. LiteralView verhoogt de leesbaarheid door het gebruik van andere fonts en font opties. Ideaal om te lezen, maar schakel uit tijdens het schrijven van code.
- 17. Print – Print het huidige document.
- 18. Save XPS – Sla je script op als een XPS file (Open XML Paper Specification).
- 19. Stopwatch – Zet een timer.
- 20. Help – Open help documentatie over het actieve element.
- 21. Settings Toolbar – Open de “settings” toolbar.
- 22. Manage UI Theme – Schakel tussen ISE thema’s en verander je kleuren, fonts en geluiden.
- 23. Restart ISE – Start ISE opnieuw op maar slaat voor het afsluiten de volledige werkomgeving op. Vervolgens start ISE opnieuw op en herstelt de opgeslagen omgeving (inclusief eventuele Untitled-bestanden en niet-opgeslagen gegevens). Het is ook mogelijk om de CTRL toets ingedrukt te houden en om zodoende de omgeving te bevriezen. De herstart wordt dan overgeslagen. Dit is nuttig om door te gaan in een nieuwe ISE voor b.v. testdoeleinden, of om bronnen vrij te maken.
- 24. Scriptmap – Open een miniatuurversie van het script om snel doorheen te lopen en om in te zoomen op specifieke onderdelen.
4. Navigation Bar
De navigatie bar is speciaal ontwikkeld voor een snelle navigatie (du huuu). De navigatie bar biedt o.a. een document selector om snel tussen documenten te schakelen alsmede een zoekfunctie die op woorden en op regex statements kan zoeken.
5. Information Bar
De informatiebar laat errors, warnings en andere verbeteringen zien. Door simpelweg op een item te klikken worden de problemen getoond zodat deze gemakkelijk te reviewen zijn. Ook is gemakkelijk te achterhalen waar deze problemen optreden in de code en is er een “Fix” button aanwezig om het probleem automatisch te verhelpen.
Hierboven hebben we ook nog even de settings bar genoemd. Deze ziet er zo uit:

Deze settings geven je de mogelijkheid om bepaalde lay-out opties snel in- en uit te schakelen zoals het automatisch aanvullen van quotes en brackets. De eerste button geeft je een popup om je licentie te beheren (en verwijderen). De enige button die ik altijd uitschakel is de button naast de licentiebutton. Deze zorgt voor geoptimaliseerde lijnnummers maar persoonlijk vindt ik de “normale” lijnnummer fijner omdat deze groter zijn.
ISESteroids Settings Optimaliseren
ISESteroids kent nog heel meer opties om de layout of het werken met scripts te verbeteren. Deze opties zijn te benaderen via het menu. Maar de opties van de hiervoor genoemde functies kunnen ook meteen aangepast worden door rechts op de button te klikken en om ervoor te kiezen de settings van de optie te veranderen.
In dit hoofdstuk doorloop ik een aantal settings die ik fijn vindt tijdens het werken, maar besteed gerust wat tijd aan je eigen instellingen. Een fijne werkomgeving is namelijk veel productiever.
Zoals we net al besproken hebben zien mijn quick settings er als volgt uit:

Afhankelijk van je niveau raad ik aan om onder “Features” de “Confirm” setting op “Medium” te zetten zodat ISE even een bevestigingsvraag stelt als een cmdlet uitgevoerd wordt welke een medium of ernstige impact kan hebben op het systeem. Een dubbelcheck is nooit verkeerd tijdens het testen.

Let op, als je cmdlets in een kwetsbare (productie) omgeving test kun je ook de “simulate” optie inschakekelen. Het script wordt dan uitgevoerd en de testresultaten zijn zichtbaar maar er worden geen actieve aanpassingen op het systeem gedaan:

Schakel in de “Navigation Bar”, “Commands Window”, “Variable Monitor”, “Sensitive Help”, “Auto-Format” en “Version Management”.

Persoonlijk gebruik ik liever TABS dan SPATIES als “indent” ofwel “inspringingsformaat” karakter. Dit omdat:
- Tabs zijn meestal groter en dus duidelijker
- Het is een karakter dat specifiek bedoeld is voor inspringen en hier als enige voor gebruikt wordt. Spaties worden in de overige code ook gebruikt
- Indent formaat kan gemakkelijk veranderd worden zonder de code te wijzigen (scheiding van gegevens en presentatie)
- Het is onmogelijk om iets “half” te laten inspringen met tabs. Dus wanneer je b.v. code kopieert van een website die 3 spaties heeft gebruikt en deze plakt in het door jezelf gemaakte “tab” ingesprongen bestand dan zal de uitlijning toch goed geplaatst worden. Als je een “spatie” ingesprongen bestand hanteert kan het hier fout gaan.
Het belangrijkste is dat het indent karakter altijd consistent gebruikt wordt in de code door het hele team. Mijn voorkeuren zet ik dus op TAB. Dit doe ik door rechts te klikken op de “Indentation” button, te kiezen voor “Inditation Settings” en de waarde te veranderen naar “TAB”.

Verder zet ik graag een aantal guidelines aan.
Ik schakel onder de “Vertical Guidelines” de “Inidentation Guides” in:

En ik schakel de “Visible Whitespace” in:

Add-Ons:
Er zijn een aantal ISE (niet per definitie ISESteroids gebonden) add-ons die zeker handig zijn om ook te installeren. Add-Ons zijn o.a. hier te vinden. De add-ons die ik fijn vind zijn o.a. “PSISELibrary.ps1” met verschillende ready-to-use functies, “PowerShell ISE addon menu generator” waarmee je je eigen menu’s kunt maken en “ISERegex” wat een regex editor en tester is.
Een andere fantastische add-on is de “Script Browser” addon waarmee je direct toegang hebt tot een groot aantal pre-made scripts.
Install-Module -Name ScriptBrowser -Force -Verbose |
Start vervolgens de scriptbrowser als volgt:
Enable-ScriptBrowser |
OF
Start-ScriptBrowserDesktop |
En als we dan toch bezig zijn dan is de Module Browser, waarmee we meteen toegang krijgen tot nieuwe modules ook wel handig om te installeren:
Install-Module -Name ISEModuleBrowserAddon -Force -Verbose |
Uiteindelijk ziet mijn userprofile era ls volgt uit:

ISESteroids Tips
1. Rechts klikken op een selectie
Gebruik de rechtermuisklik op een variabele, comment of ander geselecteerd deel van je code om hier verschillende handelingen op uit te voeren die je veel tijd kunnen schelen. Zo kun je de selectie gebruiken als input bij een “zoek en vervang” actie:

Of gebruik de selectie als input voor een loop of nieuwe functie:

Door andere waardes te selecteren krijg je andere mogelijkheden gebaseerd op de geselecteerde waarde:

Door rechts te klikken op een selectie geeft ISESteroids je legio mogelijkheden om nog sneller te werken.
2. CTRL+Q
Gebruik deze sneltoets combinatie zodat ISESteroids logische blokken uit je code automatisch selecteert.
3. Navigeer naar folder
Wanneer je op een filepath klikt terwijl je de CTRL toets ingedrukt houdt opent ISESteroids de Windows Explorer in het geselecteerde pad. Op die manier kun je snel naar je files navigeren.

Gebruik de “Debugger Margin”
De Debugger Margin is standaard ingeschakeld en zichtbaar als een grijze verticale lijn aan de linkerkant. Zo niet, klik dan “rechts” in het witte gedeelte aan de linkerkant en selecteer “Show Debugger Margin”.


Deze Debugger Margin maakt het debuggen van je code makkelijker doordat deze lijn visueel weergeeft of het uitvoeren van een script succesvol gaat. Zo zal een rode stip (breakpoint) weergegeven worden op de regel waar het script afgebroken wordt tijdens het uitvoeren. Je kunt zelf ook variabele breakpoints en kleuren instellen om nog meer inzicht te krijgen tijdens het debuggen.
Via de Debugger Margin kun je het script ook “profilen”. Door dit te doen zal de Debugger Margin weergeven hoeveel tijd het kost (procentueel) om de regels in het script uit te voeren zodat knelpunten gemakkelijk opgespoord kunnen worden.

4. Edit profiles
Je kunt niet alleen je eigen Powershell profiel gemakkelijk aanpassen. Je kunt ook via “File” – “Open Profile Script” ook de “all user” profielen aanpassen:

5. Schakelen tussen Functies
Om tussen verschillende functies te schakelen kun je in de “Navigation Bar” de gewenste functie selecteren in het dropdown menu.

6. Code Signing
ISESteroids maakt het mogelijk om met een code signing certificaat de gegenereerde code te signen. Dit betekend dat de code kan draaien op elke computer waar het certificaat vertrouwd wordt. Om de code te signen klik je rechts onderin op het “signing” icoon.

Mocht er nog geen certificaat aanwezig zijn kun je gemakkelijk een self-signed certificaat maken.

Na het signen wordt de code signing signature onderaan je script toegevoegd. Het mooiste is dat wanneer je je script opslaat, het signing blok aan de onderkant automatisch wordt bijgewerkt! Je hoeft dus niet te onthouden om het script opnieuw te ondertekenen voor elke kleine wijziging die je in de code doorvoert.

7. Convert to EXE
ISEStroids maakt het mogelijk om een bestaand script te compilen naar een EXE. Tijdens het compilen is het mogelijk om diverse eigenschappen mee te geven zoals copyright informatie, custom icon en of je digital signature verwerkt moet worden. Zo maak je dus makkelijk je eigen applicaties:

8. Execute in console
Als je op F5 drukt dan wordt de code uitgevoerd in de console window van ISESteroids. Door echter op CTRL+F5 te drukken wordt de code uitgevoerd in een stand-alone console window.
Nog een kleine tip over “sneltoetsen”. Gebruik “F6” om alle sneltoetsen te bekijken.
Conclusie
Het moge duidelijk zijn dat ISESteroids bijna onmisbaar is voor iedere administrator en elke programmeur die regelmatig met Powershell werkt. Het maken van scripts gaat sneller, makkelijker en beter wat weer resulteert in de beste scripts. Het is fijn om zoveel handigheden en optimalisatie mogelijkheden binnen handbereik te hebben. ISESteroids is fantastisch en is de aanschafprijs meer dan waard. Twijfel je nog, probeer dan eerst de gratis full-trail versie en ik weet zeker dat je na een aantal dagen zeker tot aanschaf over gaat.
Vond je deze post leuk om te lezen? Deel hem dan s.v.p. op je eigen kanalen en social media. Of geef me gewoon een like… dat vind ik ook leuk 🙂 Dankjewel!