zeitis[t!]

1. Februar 2021 geschrieben von Roland

Technikschlamassel

Wenn du weniger technikinteressiert bist, dann kannst du den Beitrag auslassen.

In dem Beitrag Annehmen oder Hinnehmen gab es technisch betrachtet gleich zwei Neuerungen. Ich wollte ein Zitat und eine Fußnote einfügen. Das war kein größeres Problem und ist, wie ich finde, auch ganz nett geworden.

So weit so gut. Noch war die Welt einfach und überschaubar.

Beflügelt von dem Tempo mit dem das klappte, wollte ich auch die Navigation am unteren Rand der Seite zum vorigen und nächsten Beitrag gleich mit automatisieren.

Damit bin ich gehörig auf die Schnauze gefallen. Ich brauchte Stunden, um wieder auf einen sauberen, lauffähigen Stand zu kommen.

Ich hatte einen Kardinalfehler gemacht. Ich hatte keine Versionsverwaltung für meinen Powershell Skriptcode verwendet und mein Skript war mittendrin nicht mehr lauffähig. Die Veröffentlichung von neuen Inhalten stand still.

Ich hatte es mit dem Einfachhalten übertrieben.

Wie kam es zu dem Stillstand?
Ich wusste zu wenig und übertrug ehemals funktionierende Annahmen aus anderen Programmierumfeldern auf das für mich neue Umfeld des Powershell Skripting.

Ich wollte einen Teil des Skriptcodes in eine Funktion auslagern. Das war auch nicht das Problem. Ich kannte das so, dass eine Funktion am Schluss ihrer Verarbeitung einen Wert zurück gibt, die der aufrufende Code weiter verarbeiten kann.

Nicht so bei Powershell Skripten, dort werden Rückgabewerte in eine Pipeline geschrieben. Der Aufrufer bekommt alles, was in dieser Pipeline enthalten ist. Gibt es keinen Aufrufer, ergießt sich die Pipeline auf die Console. Der Inhalt ist für die weitere Skript-Verarbeitung ohne Belang.

Der bestehende, funktionierende Code den ich in die Funktion auslagerte, verwendet im Verlauf seiner Arbeit ein sogenanntes Powershell Cmdlet. Dieses Cmdlet schreibt seinen Rückgabewert vor dem Rückgabewert der Funktion auch in diese Pipeline. Damit kam beim Aufrufer nicht das an, was ich beabsichtigte.

Das dauerte bis ich das verstanden hatte.

Beholfen habe ich mir mit einer Umleitung der Cmdlet Rückgabe ins Nichts (Null) durch anhängen des Kommandos "| Out-Null" an das Cmdlet.

Konsequenzen:
1. Kurzfristig arbeite ich bei Codeänderungen auf einer Kopie bis diese stabil ist.
2. Mittelfristig richte ich eine Versionierung ein.

Etiketten:

Hinter den Kulissen