Tags: PowerShell, Compliance
PSScriptAnalyzer ist ein Open-Source-Tool, das Scripts auf Basis von vordefinierten Regeln prüft. Diese helfen Entwicklern dabei, die sich an den Best Practices für PowerShell-Code zu orientieren. Mit der Version 1.21.0 kommen drei weitere Regeln sowie einige Neuerungen hinzu. Zudem ändern sich die Systemvoraussetzungen.
Der PSScriptAnalyzer bietet grundsätzlich zwei Features: Zum einen prüft er Scripts auf Best Practices und hilft beim Vermeiden oftmals schwer zu entdeckender Fehler. Zum anderen umfasst er ein Cmdlet zum automatischen Formatieren von Code in einer gut lesbaren Form.
Keine Integration mit Windows PowerShell
Nutzt man die PowerShell-Konsole oder die ISE, dann muss man das Modul selbst installieren und die entsprechenden Cmdlets explizit für eine nachträgliche Prüfung aufrufen. Dagegen existiert eine Integration mit Visual Studio Code, weil die PowerShell-Extension dort den PSScriptAnalyzer enthält.
Die Installation des Moduls erfolgt mit
Install-Module -Name PSScriptAnalyzer
Mit
Get-ScriptAnalyzerRule
kann man sich alle Regeln anzeigen lassen, aktuell sind es 68. Diese sind unterteilt in die Schweregrade Error, Warning und Information.
In der Version 1.21.0 kamen folgende Regeln neu hinzu:
- AvoidMultipleTypeAttributes: Es ist syntaktisch korrekt, für die Parameter einer Funktion mehrere Typ-Attribute anzugeben (zum Beispiel [switch][string]), aber dies führt während der Laufzeit zu unerwarteten Ergebnissen.
- AvoidSemicolonsAsLineTerminators: Diese Regel warnt vor Semikolons am Ende einer Zeile, die in PowerShell anders als in vielen anderen Programmiersprachen unnötig sind. Sie ergänzt die bereits existierende Prüfung auf angehängte Leerzeichen.
- AvoidUsingBrokenHashAlgorithms: Die Funktion Get-FileHash kann nach wie vor Hashes mit den Algorithmen MD5 und SHA1 generieren. Die Regel warnt davor, dass diese unsicher sind.
Scripts prüfen
Die eigentliche Prüfung erfolgt dann mit dem Cmdlet Invoke-ScriptAnalyzer. Man übergibt ihm einfach den Namen einer Script-Datei, die geprüft werden soll:
Invoke-ScriptAnalyzer -Path .\MyPSScript.ps1
Mit dem Schalter Fix kann das Cmdlet bestimmte Abweichungen von den Regeln automatisch korrigieren. Das gilt etwa für die Verwendung von Aliases für Cmdlets.
Code formatieren
Zur Auswahl stehen aktuell zehn Konventionen, die sich über den Parameter Settings via Autovervollständigung abrufen lassen.
Bis dato konnte man dem Tool den Code nur über den Parameter ScriptDefinition übergeben, was umständlich ist, wenn das Script in einer Datei gespeichert wurde. Nun akzeptiert das Cmdlet eine Eingabe über die Pipeline, so dass man folgendermaßen vorgehen kann:
Get-Content -raw .\Desktop\myscript.ps1 |
Invoke-Formatter -Settings CodeFormattingStroustrup
Die Ausgabe erfolgt im obigen Beispiel auf stdout. Wenn man sie in eine Datei schreiben möchte, kann man sie an Out-File weiterreichen.
Systemvoraussetzungen
PSScriptAnalyzer 1.21.0 erfordert bei der Core-Variante mindestens PowerShell 7.03. Bei Windows PowerShell stieg die Anforderung an das .NET-Framework auf Version 4.6.2.
Die Entwickler kündigten zudem an, dass in naher Zukunft die Unterstützung für PowerShell 3 und 4 entfallen wird.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
Weitere Links