Archiv der Kategorie: News

Mein Blog zieht um (bzw. wird eingestellt)

Irgendwann muss Schluss sein. Nachdem ich viele Jahre über die PowerShell „gebloggt“ hatte (leider nicht von Anfang an, wenngleich ich die PowerShell noch aus der Zeit kenne, in der sie lediglich unter dem Codenamen „Monad Shell“ – kurz und prägnant msh, bekannt war, bis jemand, vermutlich aus der Marketingabteilung, auf den Namen „PowerShell“ kam, der in der damals noch sehr kleinen Community nicht ganz unumstritten war, um es einmal moderat zu formulieren), ist jetzt Schluss.

Ich stelle den Blog daher am 31.5 2021 ein. Danach wird auch die Seite nicht mehr aufrufbar sein.

Ich werde aber auch in Zukunft in meinem „Hauptblog“ https://codeinsel.de über die PowerShell schreiben.

PowerShell DevOps Global Summit 2021

Heute (29.4.2021) ist der letzte Tag des PowerShell DevOps Global Summit 2021, an dem ich dieses Mal virtuell teilnehme (auch wenn es natürlich sehr viel schöner gewesen wäre, im sehr schönen Meydenbauer Center in Bellevue/WA an der Konferenz teilzunehmen – vor allem die Happy Hour am Abend ist sehr gut;).

Es war eher ein spontaner Entschluss – die Konferenzteilnahme kostet 300 USD, was absolut in Ordnung ist.

Mein Zwischenfazit ist, dass alle Vorträge bislang sehr gut waren. Auch wenn es in einigen Vorträgen eher um die „Basics“ ging (etwa SQL Server-Konfiguration per DSC oder die API der PowerShell), waren die Vorträge eine sehr gute Mischung aus etwas Theorie und sehr viel Praxis. Und darauf kommt es am Ende immer an. Auch die Sprecher selber sind alle sehr gut.

Nicht ganz so inspirierend wie früher war die Keynote mit Jeffrey Snover und Joey Aiello. Erster ist bekanntlich der Erfinder der PowerShell, Letzter der Leiter des Entwicklerteams (beide waren auch bereits bei einer der letzten European PowerShell Conferences in Hannover dabei, so dass sie viele PowerShell-Fans inzwischen auch persönlich kennen dürften – zum Smalltalk gibt es auf der Konferenz stets viele Gelegenheiten). Es ging wieder einmal in erster Linie um einen Rückblick und über die Abrufzahlen von der Projektwebseite (Windows holt auf) und was mit PowerShell 7.2 kommen könnte. Zum einen ist das normal für ein größeres Open Source-Projekt. Zum anderen macht sich bei Menschen, die täglich in einem halben Dutzend Videokonferenzen sein dürften, irgendwann auch einmal die „Zoom-Müdigkeit“ bemerkbar. Immerhin haben die Konferenzveranstalter nicht Ms Teams verwendet, sondern eine kleine Plattform, die speziell für Online-Konferenzen gedacht ist, und die insgesamt sehr gut funktioniert hat.

Es war auch nett, einige der aus der PowerShell Community bekannten Namen zu lesen. Auch wenn der Austausch meistens nur im Chat-Fenster stattfand, kam doch etwas „Konferenz-Feeling“ auf.

Die Adresse des PowerShell Summits noch zum Schluss: https://events.devopscollective.org/event/powershell-devops-global-summit-2021/

Abb. Dieses Mal nur virtuell – der „State of the Union“-Vortrag 2021 zum aktuellen Stand der PowerShell mit PowerShell-Erfinder Jeffrey Snover und PowerShell-Chef-Projektleiter Joey Aiello

Die ersten Schritte mit den neuen PowerShell-Notebooks

Notebooks sind eine interessante Alternative zu den bekannten Benutzeroberflächen, in dem sie das Zusammenstellen von Texten (in der Regel im Markdown-Format), Grafiken und ausführbarem Programmcode kombinieren.

Ein Notebook ist damit ein interaktives Dokument, in dem beliebige statische Daten mit dynamisch generierten Daten beliebig kombiniert werden. Die dynamisch generierten Daten werden mit den Befehlen einer Programmiersprache erzeugt sobald die Befehlsfolge vom Anwender ausgeführt wird. Der Begriff „interaktives Notizblatt“ gibt für mich Funktion und Aufgabe eines solchen Notebook sehr gut wieder.

Notebooks werden seit einigen Jahren im Bereich der Datenanalyse (z.B. im Rahmen des Jupyter-Projekts und der dahinterstehenden Plattform jupyterlab.com) und im wissenschaftlichen Bereich eingesetzt (im Jahr 2016 wurden einige der Datensätze, mit deren Hilfe Wissenschaftlern der erste Nachweis von Gravitationswellen gelungen war, über ein Jupyter-Notebook der Allgemeinheit zur Verfügung gestellt, so dass theroretisch jeder Interessierte die Datenauswertung selber nachvollziehen kann).

Ein Wikipedia-Eintrag beschreibt das Jupyter-Projekt sehr gut.

https://de.wikipedia.org/wiki/Project_Jupyter

Darüber hinaus gibt es natürlich jede Menge Webseiten, auf denen der Umgang mit Juypter-Notebooks anschaulich beschrieben wird. Alles ist kostenlos, da die Software Open Source ist (und auch lokal installiert werden kann).

Inzwischen hat auch Microsoft das Thema für sich entdeckt und bietet Notebooks seit einiger Zeit im Rahmen ihrer Azure-Platform für das interaktive Auswerten von im Rahmen des Monitoring erfassten Performance-Daten an. Darüber hinaus gibt es auf der Grundlage von .NET Interactive eine Erweiterung für Jupyter, die neben der interaktiven Ausführung von C#-Code auch die Ausführung von PowerShell-Code in einem Jupyter-Notebook ermöglicht. Einen zwingenden Grund PowerShell anstelle von Python zu verwenden sehe ich zwar nicht, aber es ist trotzdem natürlich schön, dass so etwas berhaupt möglich ist.

Das Ganze Thema ist aber im Moment noch sehr speziell und setzt eine umfangreiche „Installationsorgie“ von .NET Core, .NET Interactive, Python, Juypyter und eventuell weiterem Zubehör voraus. So interessant diese Technik auch sein mag, für den typischen „PowerShell-Admin“ kommt sie nicht in Frage.

Sehr viel interessanter ist dagegen eine Erweiterung der PowerShell Extensions für Visual Code, über sich (einfache) PowerShell-Notebooks in Visual Studio Code erstellen und anzeigen lassen. Das Besondere daran ist, dass PowerShell-Notebooks auf regulären Ps1-Dateien basieren und daher natürlich auch in der Konsole oder der ISE ausgeführt werden können – dann werden sie natürlich als Skripte angezeigt. Wie auch sonst.

Doch warum sollte man das tun? Ein PowerShell-Notebook ist immer dann interessant, wenn man beliebige Befehlsfolgen mit (formatierten) Texten kombinieren und dem Anwender die Ausführung der Befehsfolgen in einer beliebiger Reihenfolge ermöglichen möchte. In der Vergangenheit musste man jeweils einen Block in einem Skript markieren und mit [F8] ausführen. Dieselbe Befehlsfolge als Teil einer Zelle eines Notebooks ist eine „visuelle Insel“ und damit besser als solche erkennbar. Auch das Ausführen über einen eigenen Button ist komfortabler. Schritt für Schritt-Anleitungen und Material für Schulungen fallen mir spontan ein, es gibt sicher noch weitere Anwendungsfälle.

Wer das Ganze selber ausprobieren möchte, muss Stand August 2020 noch zwei Besonderheiten beachten, die in ein paar Wochen keine Rolle mehr spielen werden:

  1. Es funktioniert nur mit der Insider Version von VIsual Studio Code, die einen eigenen Download darstellt (dieser kann aber problemlos zur regulären Visual Code-Installation installiert werden – das Produkticon ist grün und nicht blau).
  2. Es setzt die aktuellste Version der PowerShell-Extension voraus (ab Version v2020.7.0 – mit älteren Versionen funktioniert es nicht).

Ob alle Voraussetzungen erfüllt sind erkennt man ledlgich an einem unscheinbaren Button am rechten Rand der Bereichsleiste mit dem zwischen Code- und Notebook-Ansicht umgeschaltet wird.

.

Abb. Über einen Button wird zwischen Notebook- und Code-Ansicht umgesschaltet

Außerdem muss die Umschaltoption in den Einstellungen zu den PowerShell Extensions aktiviert werden.

Abb. Damit der Toggle Button sichtbar ist, muss eine EInstellung gesetztt sein.

Ein Notebook besteht aus Zellen. Eine Zelle enthält entweder (beliebigen) Text oder ausführbare Befehle. Auch wenn es naheliegend ist, den Text mit Markdown auszuzeichnen, damit z.B. eine Überschift als solche formatiert ausgegeben wird, eine Voraussetzung ist das natürlich nicht.

Das Besondere an einem PowerShell-Notebook ist, dass es eine reguläre Ps1-Datei ist, die daher auch wie jede andere Ps1-Datei ausgeführt wird. In diesem Fall spielt der enthaltene Text keine Rolle, da es lediglich Kommentare sind. Lediglich in der Notebook-Ansicht in Visual Studio Code wird der MarkDown-Text „gerendert“ und formatiert angezeigt.

Abb. Ein PowerShell-Notebook fasst formatierten Text und ausführbare Befehle in Zellen auf einer Seite zusammen

Den Komfort eines Jupyter-Notebooks gibt es daher im Moment noch nicht (eventuell ist das geplant), was auch daran deutlich wird, dass die Ausgaben einer „Zelle“ wie üblich im Konsolenfenster ausgegeben werden. Es wäre natürlich etwas schöner, wenn der Output unterhalb der Zelle erscheinen würde (was bei umfangreicherem Output natürlich auch nicht ganz optimal ist).

Auch wenn es am Ende (im Moment) nur um eine „Aufhübschung“ eines Skriptes und ein komfortableres Ausführen von Befehlsfolgen geht, sind die neuen PowerShell-Notebooks eine interessante und willkommene Erweiterung und Alternative, die ich in Zukunft (sofern sie ein offizeiller Teil von Visual Studio Code geworden sind) in meinen PowerShell-Schulungen einsetzen werde.

Ein Dank an das eine kleine Entwicklerteam der PowerShell Extensions, dass sie das Thema aufgegriffen (die Visual Studio Code-Entwickler stellen für die Implementierung von Notebooks Schnittstellen zur Verfügung) und bislang so gut umgesetzt haben.