Archiv der Kategorie: Tools

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.

Kleiner Fix für PScribo

PScribo von Ian Brighton ist ein Modul, das ich nach wie vor gerne verwende und weiterempfehle. Auch wenn der Versionsstand immer noch < 1.0 ist, scheint das Projekt noch aktiv zu sein (https://github.com/iainbrighton/PScribo/pulse).

Unter einem deutschsprachigen Windows erschienen zuletzt „jede Menge“ Fehlermeldungen. Eine Variable $Location war nicht definiert. Der Grund war, dass im Modulverzeichnis das Unterverzeichnis „de-De“ nicht vorhanden ist. Nachdem ich das Verzeichnis angelegt und die Psd1-Datei aus dem en-Us-Verzeichnis dort hinein kopiert hatte, lief es wieder durch.

Kommerzielle Tools für die PowerShell (es muss nicht alles kostenlos sein)

Es gibt nicht viele kommerzielle Tools für die PowerShell, das Angebot ist mehr als überschaubar. Mehr oder weniger spontan fallen mir folgende Produkte ein:

  1. PowerShell Studio von Sapien Technologies
  2. PowerShell Server und die NetCmdlets von n/Software
  3. ScriptRunner von AppSphere
  4. ISE Steroids natürlich von Tobias Weltner
  5. BlueParq von BlueParq BV aus den Niederlande (die Jungs haben bzw. hatten diesen Sommer viel Zeit zum Skripten)

Auf BlueParq bin ich erst vor kurzem in einem Artikel in IT-Administrator aufmerksam geworden. Es klingt sehr interessant und ich werde das Tool in Kürze (sprich in den nächsten 3-6 Monaten;) in meinem Blog vorstellen. Es ist nicht webbasierend, sondern eine Windows-Anwendung, die installiert werden muss. Das Tool ist nicht kostenlos, was sehr gut ist. Es gibt eine 14-tätige-Testversion. Ich denke, die Zeitspanne ausreichend. Wer sich damit 1-2 Tage beschäftigt sollte danach wissen, ob ein Einsatz in Frage kommt oder nicht.

Auf zwei weitere kommerzielle Tools bin ich eher per Zufall aufmerksam geworden.

  1. PowerShell Pro Tools
  2. PowerShell Universal Dashboard

Beide Tools stammen von IronMan Software. Insbesondere das Universal Dashboard macht einen sehr interessanten Eindruck, da ich mit seiner Hilfe beliebige „Informationscockpits“ á la Nagios zusammenbauen lassen. Eine naheliegende Anwendung ist es, Daten aus dem Office 365-Portal, etwa Nutzerstatistiken (sofern solche dank DSGVO überhaupt noch erfasst werden dürfen), darzustellen.

Beide Tools werde ich in den nächsten Wochen (hoffentlich werden es keine Monate) an dieser Stelle vorstellen. Wer solange nicht warten möchte, probiert sie am besten selber aus.

Update vom 25/09:

Die Adresse von BlueParq ist https://www.blueparq.com/

Die Adresse für das Universal Dashboard ist https://ironmansoftware.com/universal-dashboard

Die Idee solcher Dashboards ist alles andere als neu. Bereits 2008 gab es das Projekt „Poshboard“, das aber offenbar wieder eingestellt wurde. Das Universal Dashboard macht einen sehr guten Eindruck. Ich bin sicher, dass ich es in naher Zukunft auch für irgendetwas verwenden werde.

Anwendungen ausliefern mit PDQ Deploy von Arsenal Software

PDQ Deploy von Arsenal Software ist eine durchdachte und erstaunlich gut gemachte Anwendung, die das Verteilen von Software-Paketen im Netzwerk so einfach wie möglich machen soll. PDQ Deploy eignet sich vor allem für kleinere Firmen, Behörden oder Schulen für die eine große Lösung wie ein SSCM alleine schon aufgrund seiner Komplexität nicht in Frage kommt. Es wird auch kein Windows Server benötigt, theoertisch genügt bereits ein Windows 7-Computer. Ein Active Directory wird insofern eingebunden, das bei der Auswahl der Zielcomputer eine AD-Suche durchgeführt wird.

PDQ Deploy gibt es in drei Varianten: Enterprise, Pro und kostenlos. Die kostenlose Version kann uneingeschränkt genutzt werden, was ich sehr sympatisch finde, allerdings stehen viele Funktionen, etwa beim Erstellen eigener Pakete, die Möglichkeit Pakete zeitgesteuert zu verteilen und die Warteschlage, in die Pakete eingereiht werden, die aus irgendeinem Grund nicht zugestellt werden konnten, nicht zur Verfügung. Außerdem enthält die Paketbibliothek nicht über 150 Pakete der am häufigsten eingesetzen Zubehörprogramme, sondern nur ein paar. Für das Kennenlernen ist die kostenlose Version aber ideal geeignet.

Auch die PowerShell spielt bei der aktuellen Version eine Rolle, in dem ein einzelner Schritt als Teil eines Pakets, der bei der Installation ausgeführt wird, durch PowerShell-Befehle, als Alternative zu Stapeldateibefehlen, abgebildet werden kann. Ansonsten können PowerShell-Skripte als Paket verteilt und auf dem Zielsystem zur Ausführung gebracht werden – ein kleines Skript, das eine Melodie abspielt, und das per PDQ Deploy auf einen anderen Computer ausgeführt wird, war der Grund, dass ich beim googlen überhaupt auf das Tool aufmerksam wurde (es gibt natürlich noch ein Modul mit dem Namen PowerShellArsenal). Wie man es schafft, dass auf dem Computer des Kollegen ein Weihnachtslied abgespielt wird kann man unter der folgenden Adrese lesen:

http://www.adminarsenal.com/admin-arsenal-blog/powershell-music-remotely/.

Nach ein paar Tagen des Ausprobierens bin ich von der Leichtigkeit mit der sich Anwendungen „verteilen“ lassen sehr beeindruckt.

Hinter PDQ Deploy steckt die Softwarefirma Admin Arsenal aus Salt Lake City/USA. Weitere Informationen gibt es unter http://www.adminarsenal.com/. Der Webauftritt ist wirklich sehr originell. Ein weiteres Argument, das für das Tool spricht;)

Mein derzeitiges Fazit zu PQD Deploy: Klare Kaufempfehlung für alle, die die Softwareverteilung in ihrem Netzwerk bislang noch zu Fuss erledigen müssen.

Mit PDQDeploy macht das Ausliefern von Anwendugnen im lokalen Netzwerk richtig Spaß
Mit PDQDeploy macht das Ausliefern von Anwendugnen im lokalen Netzwerk richtig Spaß