In diesem Beitrag soll es um die Powershell im Allgemeinen gehen und sich an Benutzer mit grundlegenden Skriptingkenntnissen wenden.
Meine Erfahrungen im Umgang und dem ein oder anderen Tool.
Ich bin ein Freund der Powershell geworden, da man mit dieser Scripting Engine viele sich wiederholende Aufgaben schnell und vor allem dann auch fehlerfrei immer wieder erledigen kann. Sei es ein Passwort nach bestimmten Kriterien automatisiert erstellen, dem AD Account hinzufügen, das Flag für "Bei der nächsten Anmeldung Passwort ändern" setzen und einen vorgefertigten Passwortbrief ausdrucken. Oder Gruppenmitgliedschaften zwischen zwei AD Accounts übertragen. Alles was über viel Klickerei zu erreichen ist, kann man durch die Powershell eleganter lösen.
Im Grunde genommen bin ich nun so weit, dass ich alles, was ich auf Dateiebene oder im Bereich AD oder Exchange mehr als zwei Mal mache, versuche in der Powershell zu lösen. Im besten Fall wiederhole ich irgendwann noch einmal die Tätigkeit, oder führe eine ähnliche aus und muss das Skript nur ein wenig anpassen, oder im schlechtesten Fall habe ich wieder ein wenig mehr Übung im Skripten und das hilft natürlich bei den kommenden Aufgaben.
Erstmal ein paar allgemeine Überlegungen
ISE - Integrated Scripting Environment oder nicht ISE (Konsole) - das ist hier die Frage
Es gibt für mich keinen Grund der Konsole den Vorzug zu geben.
Hier ein paar Gründe:
Kopieren und Einfügen
Dies ist in der Konsole nur mit der Maus und nicht mit Tastaturbefehlen möglich
Bei mehrzeiligen Befehlen werden der Prompt und der Zeilenumbruch mit kopiert
Ich kann durch das Kopieren und Einfügen der gleichen Zeile untereinander mit anschließenden editieren der einzelnen Zeilen mehrere ähnliche Syntax erstellen und dann einzeln testen und somit gut experimentieren
Wenn ich bemerke, dass eine lange gepipte Verkettung von Befehlen zu komplex wird, kann ich diese recht einfach wieder zerpflücken und in z.B. eine Funktion wandeln
IntelliSense
Autovervollständigen mit einem kleinen Fenster neben dem Cursor
In der Konsole nur CMDlets und Parameter mit Tab durchschaltbar
Einfärbung der Codeelemente erhöht die Übersichtlichkeit
Tippfehler werden schneller erkannt
Befehls Add-on Reiter
Ermöglicht schnellere und einfache Erstellung eines CMDlets mit den benötigten Parametern
Add-Ons
Ein sehr schönes CMDlet ist für die Arbeit im AD ist NTFSAccess.
https://blogs.technet.microsoft.com/heyscriptingguy/2014/11/22/weekend-scripter-use-powershell-to-get-add-and-remove-ntfs-permissions/
ist von The Scripting Guys
Bei den Downloads die man aus dem Internet lädt, müsst ihr daran denken, vor dem kopieren, ausführen etc. die Eigenschaften des Downloads aufzurufen und ganz unten im allgemeinen Reiter bei dem Punkt Sicherheit den Button "Zulassen" zu drücken.
Ein besonderes Bonbon sind die Powershell ISESteroids von Powertheshell.com
Eins vorweg, die ISESteroids sind nicht kostenlos. Preise findet ihr auf Dr. Tobias Weltners Webseite http://www.powertheshell.com/isesteroids2-2/ordering-isesteroids/
Dr. Tobias Weltner ist ein Experte aus dem Team von IT-Visions (Dr. Holger Schwichtenberg). Dr, Schwichtenberg ist durch zahlreiche Publikationen, auch rund um die Powershell, bekannt. Es lohnt sich auf jeden Fall eins seiner Bücher zur Hand zu haben, sobald man mit der Powershell anfängt zu Skripten.
Aber nun zurück zu den Steroiden.
Um diese immer beim Start zu laden, müssen diese in die Profildatei geladen werden. Diese findet ihr unter dem Userverzeichnis\Dokumente\WindowsPowershell. Hier ändere ich noch die Farbe der Fehleranzeige von dem Blau in Weiß, da dies generell besser lesbar ist. Das macht ihr mit dem Eintrag (get-host).PrivateData.errorbackgroundcolor = "White"
Oder, sofern ihr die Steroids mit start-steroids schon geladen habt über die neue Leiste aufrufen.
Was die Steroids für mich mittlerweile unverzichtbar machen sind
Gaaaanz wichtig Eine Versionierung
Einen Simulationsmode - hier muss man nicht nach jeder ausführbaren Zeile ein -Whatif kommen
Die Möglichkeit aus dem Skript eine eigenständig laufende EXE zu machen
Der Variablen Explorer - Dieser zeigt alle verfügbaren Variablen und deren Inhalt an
Win Merge File Compare - Ist im Zusammenarbeit mit der Versioncontrol einfach gut um Unterschiede in den Skripten zu finden
PSShaper - Zeigt was in dem Skript nicht den "best practice" entspricht
Schon während des Skriptens erscheinen zahlreiche Hinweise, wenn man dabei ist einen Bock zu schießen und geben einem Möglichkeiten vor es zu verbessern. Diese Möglichkeiten werden dann bei Wunsch auch direkt umgesetzt,
Wenn man eine Klammer, egal welcher Art auch immer öffnet, erscheint gleich auch das entsprechende Gegenstück. Wem ging es noch nie so, dass man später die Klammern zählt und sucht ;-)
Ein paar Zeilen Code geschrieben und dann gedacht...das wäre auch eine gute Funktion. Hier ist nach dem Markieren des Codes mit einem Rechtsklick sofort alles erledigt sobald man sich für einen Namen für die Funktion entschieden hat und welche Variablen als Parameter übergeben werden sollen.
Vorher
Nachher
Durch einen weiteren Klick auf einem Knopf wird diese Funktion in ein Modul geschrieben oder einem Modul hinzugefügt.
Dies nur mal als einen kleinen Appetizer. In den kommenden Blogeinträgen kommt zu den Steroids bestimmt noch mehr.