Eine kurze Einführung in die PowerShell für erfahrene Skripter

Wer sein Leben lang eine klassische Skriptsprache (VBScript, Perl usw.) verwendet hat und nun mit der PowerShell arbeiten möchte, hat man Anfang oft unnötige Probleme und Startschwierigkeiten. Da bei der PowerShell vertraute Formalismen wie eine explizite Variablendeklaration oder ein expliziter AUsgabebfehl keine ROlle spielen bzw. optional sind, wirkt die PowerShell-Syntax für „Umsteiger“ ungewohnt, unlogisch und man tendiert schnell zu alles nur noch negativ zu sehen.

Ich muss zugegeben, dass ich am Anfang auch meine kleineren Problemee hatte, aber nach ein paar Jahren kam ich dann ganz gut mit der PowerShell-Syntax klar;)

Angeregt wurde ich für diesen Blog-Eintrag durch einen längeren Thread in einem Forum auf Administrator.de, in der der Fragesteller (offensichtlich ein älterer Mensch mit sehr viel VBScript-Erfahrung) mit der Art und Weise wie in PowerShell Arrays verwendet nicht klar kam und in jeder „geht leider immer noch nicht“-Antwort auf am Anfang sehr hilfsbereite Antworten immer mehr der Frust über die vermeintlich „grausame“ PowerShell-Syntax anklang. Am Ende schlug die Hilfsbereitschaft natürlich in Kritik um und er musste sich ein „Du wetterst hier seit Tagen über
PowerShell – irgenwie alles sch… aber allem Anschein nach fehlen dir die elementarsten Grundlagen“. Der Fragesteller gab dann auch später zu, dass er noch sehr viel lesen, lesen und lesen müsste, aber das ist für mich weder die Lösung noch die Ursache der offenkunding vorhandenen Unzufriedenheit.

Das grundsätzliche Problem ist eine überzogene Erwartungshaltung („mit PowerShell soll ja alles einfacher werden“ – wird meines Wissens nirgendwo behauptet) und die (falsche) Annahme, dass Techniken, die z.B. bei VBScript seit 20 Jahren angewendet wurden, sich 1:1 auf PowerShell übertragen lassen. Und wenn dann noch eine gewisse Ungeduld hinzu kommt, ist die Unzufriedenheit groß. Und wenn dann der Unzufriendende eine Multiplikator-Funktion besitzt und sich in der Firma oder in Foren über die vermmeintlichen Schwächen der PowerShell auslässt….

Die PowerShell ist nicht perfekt, aber sie ist nicht nur enorm leistungsfähig (das hilft Anfängern im Allgemeinen wenig), sondern weitestgehend konsistent. Das Problem, sofern man es als solches betrachtet ist, dass die Syntax keine Rücksicht auf VBScript&Co genommen wurde, Bruce Payette (der Kopf der PowerShell-Spprache) vielleicht nicht ein ganz so großes Genie ist wie Guido van Rossum (Python) oder Larry Wall (Perl) und die Version 1.0 unter einem enormen Zeitdruck veröffentlicht wurde. Der Vater der PowerShell, Jeffrey Snover, hat es auf der PowerShell Konferenz 2017 in Hannover so umschrieben, dass der Vorgesetzte bei Microsoft das ganze Projekt am liebsten wieder eingestampt hätte und dem Team irgendwann ein Ultimatum gestellt hatte – entwweder ihr bringt jetzt eine Version 1.0 oder das Projekt ist tot. Keine ganz optimale Voraaussetzung und eventuell eine Erklärung für einige der Inkosistenzen.

Hier sind meine persönlichen Regeln/Empfehlungen für einen Einstieg, der sich gerade an Anwender richtet, die sehr viel Erfahrung mit VBScript und anderen formalen Skriptsprachen besitzen.

Regel 1: Variablen müssen nicht deklariert werden

Regel 2: Es gibt keine Notwendigkeit Write-Host zu benutzen

Regel 3: Der Umgang mit Arrays ist einfach, man darf nur nicht wie ein Programmierer denken

Regel 4: Der Umgang mit mehrdimensionalen Arrays ist inkosistent und ein Schwachpunkt der PowerShell-Syntax

Regel 5: Zweidimensionale Arrays werden im Allgemeinen nicht benötigt

Regel 6: Es gibt ein Pendant zu Option Explizit

Regel 7: Halte es einfach

Regel 8: Verwende die Eingabehilfen und vor allem PSREadline

Regel 9: Freunde Dich mit Subexpressions an – am besten sofort

Regel 10: Aktualisiere die Hilfe und schau Dir die Beispiele zu Cmdlets und PowerShell-Befehlen an

Regel 11: Schreibe immer zuerst einen Test

Ok, diese Regel ist nicht ganz ernst gemeint.

Ich werde zu allen Regeln in naher Zukunft noch einiges schhreiben. Ich wollte die Regel erst einmal los werden, da sie frustrierten PowerShell-Anfängern eventuell helfen können. Und noch etwas: Keine Panik und alles wird gut;)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.