PSConf 2017 | Show-SecondDay

Das nicht alle nach dem gestrigen Abend heute früh erschienen, war schon fast zu erwarten. Aber dies kann man auch keinem verübeln, bei dem tollen Programm gestern und dem Ambiente. Mein Tag startet heute mit James O’Neill.

Good Shared PowerShell Module

Tools und Skripte zu teilen, egal ob mit Kollegen oder öffentlich, gehört in gewisser Weise zum Alltag. Doch auch wenn diese Lösungen nur für ein selbst sind, sollten sich an gewisse Regel und Best Practices gehalten werden. In dieser Stunde hat James vorgestellt, was wichtig ist um ein Skript / Module bereitzustellen. Hierzu gehören Dinge, die jedem Programmierer, DevOp oder Administrator klar sind, welche aber in 90 % der Fälle nicht gemacht werden. Dazu einige Beispiele aus seiner Session:

  • Name: Der Name einer Funktion oder eines Tools sollte immer verständlich sein, aber auch in Zeiten von Tab completion nicht all zu lang.
  • Einfach Halten: Die Skripte sollen einfach aber dafür Modular aufgebaut werden
  • Pester Test: Mit dem Ergebnis von Pestertests kann man ganz einfach zeigen, dass der eigene Code Funktioniert.
  • Hilfe: Hilfe ist einer der Dreh und Angelpunkte in Skripten und zu der Hilfe zählen vor allem auch Beispiele. Die Hilfe ist nicht nur für andere sehr wichtig, sondern auch für ein selbst. Grund ist, dass bei der Menge an Skripten die man schreibt und einige nur ein oder zwei Mal im Monat nutzt, man selbst die Syntax vergisst. Hier helfen solche Beispiele enorm. Doch die anderen Möglichkeiten der Hilfe sollten nicht vergessen werden. Es ist egal ob es sich dabei um Comment Base Help oder um ein Help xml File handelt, die Hilfe gehört einfach dazu. Die Hilfe ist zwar für den Anwender super, für den Kollegen, der den Code verstehen soll und diesen vielleicht verbessern soll hilft dies nicht viel.
  • Code Kommentieren: eine simple Möglichkeit seinen Code später wieder zu verstehen: Kommentare einbauen. Hier ist die Devise kurz und knapp. Ein Kommentar, aber auch die Synapsis sollten nicht viel länger als ein Tweet sein.
  • Konsistenz: Die Nutzer sind es gewöhnt für einen Parameter der einen Pfad angeben soll, den Parameter Path zu nutzten. Es ist nur sinnvoll, die vorhandenen Parameternamen zu nutzen. Die Nutzer kommen andernfalls durcheinander und dann nutzen die Solution nicht mehr.
  • Benutzerfreundlich: Neben den wiederkehrenden Parameternamen ist es auch wichtig, Ausgaben zu haben und einfach zu gestalten. So sollten Möglichkeiten wie WhatIf, Write-Progress und Write-Verbose auf jeden Fall mit genutzt werden. Aber auch eine gute Fehlerbehandlung und Parameter Validierung ist von großer Bedeutung.

Zusammenfassend ist zu sagen: Jeder weiß, dass diese Dinge beachten werden müssen, aber keiner macht es. Später kostet es mehr Kraft, Zeit und Geld, all diese Sachen nachzuarbeiten. Auch ich musste und muss mich manchmal dazu zwingen, genau diese Punkte stetig zu beachten.

conclutions

PowerShell Performance

Zwei PowerShell Performance Vorträge habe ich heute besucht. Gleiches Thema, (fast) unterschiedlicher Inhalt. Beginnen wir mit Staffan Gustafsson, Mitentwickler von Star Wars Battlefield 2. Er liebt die PowerShell und zeigt wie er mit großen Datenmengen umgeht und die Zeitunterschiede der einzelnen Möglichkeiten. Hier ein paar Beispiele, die sicher auch schon viele gesehen haben:

Bei ihm sagen eher die Bilder mehr aus, als den Code zu beschreiben.

Dies sind zwei Beispiele, einmal mit foreach und einmal mit get-childitem.

Gegen Ende der Veranstaltung hat man jedoch gemerkt, dass Staffan ein Entwickler ist, denn es ging immer mehr in .Net. Was sicherlich auch nötig ist um zu solchen Zeiten zu kommen.

Der zweite Performance Veranstaltung war von dem Amerikaner Jason Yoder, ein cooler typischer Amerikaner, der versucht das “lustige” europäische IT Publikum zu begeistern. Er hat durch viele Live Vergleiche auch die Unterschiede in den einzelnen Möglichkeiten dargestellt. So hat er die Unterschiede unter anderen in folgenden Punkten gezeigt:

  • Asynchrones- vs Synchrone Verarbeitung
  • $psItem vs. $_
  • Piplining vs. . Notation
  • Foreach vs. Foreach-Object
  • Like vs. -Eq
  • Contain vs. contains Methode

In allen Zeigte er dadurch, wieviel Zeit und Geld er dadurch einsparen konnte, was sich positiv auf seine Karriere auswirkte. Dies ist sicher auch eine Session welche ich mir im Nachgang nochmal anschauen werde.

Zu diesem Thema ist zu sagen, es ist enorm wichtig seinen Code gut und schnell zu entwickeln. Jedoch sollte auf die zu investierende Zeit geachtet werden und die Notwendigkeit der einzelnen Möglichkeiten, denn manchmal hat man die halbe Sekunde doch mehr Zeit.

FileServer

Thorsten Butz hält, meiner Meinung nach, mit die besten deutschsprachigen Vorträge. FileServer klingt zunächst etwas langweilig. Das war aber ganz und gar nicht der Fall. In seiner Session ging es primär darum einen File Server remote zu administrieren. Er stellte dabei dar, wie das die meisten Administratoren machen, aber, und das ist das Wichtige, auch einen besseren Weg. Das gute an diesem Beispiel ist, dass es leicht auf andere Szenarien übertragbar ist.

Die Kernfrage ist, wie kann man sein Leben vereinfachen? Die meisten nehmen RDP-Sitzungen für Remotes Arbeiten und den Windows Explorer um Freigaben zu erstellen. Probleme mit der Firewall? Kein Problem, meist wird dieser deaktiviert. Das sind einige Punkte bei denen er zeigt wie es anders geht. Ich möchte nicht die ganze Session wiederspiegeln, dafür fehlt mir im Moment das Know How. Aber in Stichpunkten kann man dies zusammenfassen:

  • Die alten Tools gehen immer noch sehr gut in Zusammenhang mit der PowerShell. Nachteil: Es werden keine Objekte zurückgegeben. Z.B. Net.exe, Whoami.exe.
  • Nano Server und Server Core werden immer präsenter und sind nicht für RDP Administration gedacht, bzw ist dies bei Nano gar nicht möglich.
  • Arbeiten mit dem Windows Server Manager ist unerlässlich
  • Nicht die Firewall deaktivieren: Remote Ports freigeben und dokumentieren.
    • Firewall Rules per GPO auf allen Fileservern bereitstellen
    •  Adm und admx Dateien sind dabei nicht immer die Lösung
    • Am besten eine Client Maschine nehmen, die Einstellungen vornehmen, exportieren und auf DC GPO Importieren. Wieso? Der GPO Datensatz wird nur mit den FileServer Resource Management Tools bereitgestellt, wo die Installation auf dem DC meist nicht erlaubt ist.

In den letzten 10 Minuten Zeigte Thorsten noch wie der Windows Explorer als Administrator aufgerufen werden kann. Hier hat er mehrere Möglichkeiten vorgestellt:

  1. Registry Wert entfernen (Pfad steht in seinen Präsentationsunterlagen)
  2. Den Explorer Als Backup Admin starten
  3. Eigene Gruppen nehmen und zu Domänen Administrator Gruppe hinzufügen, anstatt die Nutzer direkt zuzuordnen.

Leider war zu wenig Zeit um all seine Beispiele zu sehen. Durch seinen kurzen Überblick bin ich auf die Unterlagen gespannt und werde mir diese sicherlich etwas genauer anschauen.

Gruppenrichtlinienverwaltung

Meine letzte Session des Tages drehte sich um Gruppenrichtlienienverwaltung und dies natürlich mit PowerShell. Holger Voges hatte nicht viele Folien, was nicht schlimm war, denn es wurde viel mehr gezeigt. Er stellte nicht nur die Arbeitsweise der vorhandenen GPO PowerShell Tools vor, sondern auch seine Weiterentwicklungen. Dabei zeigte er Beispiele für Backup und Restore von GPO’s. Ein großes Thema war aber auch Reporting. Reporting und wie man mit diesen Ausgaben weiterarbeiten kann. Außerdem zeigte er viele Beispiele, wie man bestimmte GPO’s finden kann, z.B. anhand eines Registry Schlüssels oder ob diese für User oder Computer konfiguriert sind. Sein eigenes GPO Modul wird er in der nächsten Zeit in die Gallery laden. Es ist eine lohnenswerte Sache sich dies anzuschauen und vielleicht auch mitzuarbeiten.

Zusammenfassung von Tag Zwei: Viel Input, viel zu Lernen und viel zu Testen.

Über Andreas Bittner

MCSA Server 2016, MCSA Server 2012R2, Exchange 2010 & SharePoint Devop
Dieser Beitrag wurde unter Allgemein, DevOps, Nice To Know, PowerShell, PSConfEU2017, Scripting abgelegt und mit , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

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

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.