Der erste Artikel der Serie Lean Automation per PC ist über PowerShell, den Nachfolger der Konsole.
Warum macht eine blau/weiße Konsole den Auftakt?
- Neue PCs haben die Leistung eines Porsche. Doch oft wird nur ein Bruchteil davon genutzt(laut Jason Helmick). So ist es auch wenn man CMD anstatt PowerShell nutzt.
- PowerShell ist auch für Nicht-Administratoren interessant. Es lohnt sich zu wissen, was es kann und was nicht.
Sicher kennen Sie noch die gute alte Kommandozeile. Damit lässt sich schon einiges Automatisieren; das ein oder andere CMD Programm läuft bestimmt auch noch auf Ihrem PC? Auf jedem aktuellen Windows System ist die PowerShell vorinstalliert. Das ist der neue Standard in Sachen Kommandozeile.
Doch wer braucht das und was ist das?
1. PowerShell – Das beste von Windows und Unix
Sie erinnern sich vielleicht noch an die Befehle dir
um den Verzeichnisinhalt anzuzeigen oder cd
um das Verzeichnis zu wechseln?
Auf Unix-Systemen gab es mit der Shell schon seit Langem ein sehr mächtiges Werkzeug für die Administration und Automatisierung. PowerShell ist ähnlich und bietet einem Windows Administrator das was bei Unix Systemen schon lange Standard ist – und mehr.
Weißer Text auf blauem Hintergrund! Das ist doch sowas von gestern, es lebe die GUI. Wer braucht denn noch eine Kommandozeile? Windows ist doch eben deswegen nicht Linux!
Guter Einwand, doch kommen wir zu den Vorteilen einer Kommandozeile bzw. PowerShell:
2. Automatisieren geht leichter mit Text als grafischen Oberflächen
Einmal programmiert läuft es automatisch und genau so wie Sie es wollen. Sie müssen nicht mehr klicken. Zum Beispiel beim Anlegen eines neuen Benutzers. Der Administrator musste:
- Die Benutzerdaten einlesen
- Den Benutzer in der Domäne anlegen
- Den Benutzer im Adressbuch hinterlegen
- Das vorübergehende Passwort an den Antragsteller senden
- Einen Eintrag im Logfile anlegen
Klar, kann er das von Hand machen, so viele Schritte sind es nicht. Doch ein einmal angelegtes Skript kann er immer wieder verwenden. Er spart bei jedem Benutzer Zeit und muss sich keine Gedanken machen, dass er etwas vergisst.
3. Objektorientierung
Im Gegensatz zur Kommandozeile ist PowerShell objektorientiert. Das macht das Arbeiten so viel einfacher. Sie können direkt auf die Member/Datenfelder des Objekts zugreifen.
Beispiel: Sie möchten die Dateinamen ohne Endung ausgeben. Ja, das geht mit Textfiltern, doch leichter und sicherer ist der Zugriff auf die Eigenschaft .BaseName
.
4. Zugriff auf .NET
Sie stoßen an die Grenzen von PowerShell? Dann greifen Sie direkt auf die .NET Bibliothek und hunderte von Klassen und Funktionen zu. Sie können die komplette Funktionalität von .NET im PowerShell nutzen. Empfehlen würde ich das nicht unbedingt, denn für aufwändige Programme ist es nicht gedacht, doch wenn es mal nötig sein sollte, ist es sehr hilfreich.
5. Flache Lernkurve für Umsteiger
Sie haben schon einmal programmiert oder kennen die Kommandozeile? Dann ist die Lernkurve relativ flach. Viele Funktionen aus der Batch funktionieren weiterhin. Nutzen Sie die Batch und denken Sie objektorientiert. Mit der Syntax ist es wie bei jeder neuen Sprache. Das braucht ein wenig Übung. Eine Skript sieht aus wie Mischung aus Batch und C#.
6. Vorinstalliert
Wie kann ich PowerShell installieren? Das brauchen Sie nicht. PowerShell ist auf jedem Windows 7+ PC schon installiert. Genauso wie die PowerShell Scripting Environment, eine schlanke Entwicklungsumgebung für die Skripte. Beides gratis.
Drücken Sie mal die Windows Taste und tippen Sie PowerShell.
7. Vorhandenes Sicherheitskonzept
Das Sicherheitskonzept von PowerShell ist wesentlich ausgereifter als das der Kommandozeile. Es gibt verschiedene Berechtigungsstufen. Wer welche Skripte ausführen darf etc. Skripte können signiert werden um die Ausführung von veränderten Skripten zu verhindern.
Es ist keine Skriptsprache
PowerShell wurde für die PC Administration entwickelt – nicht als Skriptsprache, dennoch lassen sich damit leicht Skripte mit allen damit verbundenen Vor- und Nachteilen erstellen:
Sie brauchen keine Compiler, keine Roh und Enddaten. Sie haben ein Skript und das beinhaltet alles. Ein Nachteil ist, dass jeder der das Skript kennt den Quellcode einsehen kann.
“PowerShell is a scripting language. Not true. PowerShell contains a scripting language: a very tiny one, with only about two dozen keywords. But PowerShell is actually a command-line shell, much like cmd.exe or UNIX Bash shell. You run commands—such as Ipconfig, Ping, and other commands that you’ve undoubtedly run in the past—in this shell. True, at some point you might want to combine multiple commands into a batch file, and you’re welcome to call that scripting if you want to. But it isn’t really programming such as you’d perform in Microsoft Visual Studio.
Part of this myth comes from the fact that PowerShell allows itself to be used as a kind of lightweight programming language by folks that have those skills. But it doesn’t require you to have those skills to be effective.” [Quelle]
Lohnt es sich denn PowerShell zu lernen?
PowerShell ist ein, wenn auch eher unsichtbares, strategisches Produkt von Microsoft(siehe hier und dort). Immer mehr Produkte lassen sich mit der PowerShell verwalten und konfigurieren. Für Windows Administratoren wird es in Zukunft unerlässlich, doch wie sieht es mit anderen Anwendern aus; was spricht gegen den Einsatz?
Kleine Fehler kosten Stunden
Klar, Sie müssen eine neue Sprache lernen. Vor allem wenn man sich nur nebenher damit beschäftigt kann dies sehr anstrengend und zeitraubend sein.
Ihr erstes Skript wird Stunden verschlingen. Wie gebe ich einen Text aus, wie lese ich Daten ein? Wie werden Variablen, Felder und Funktionen deklariert? Wie Schleifen, IF-ELSE Konstruktionen etc.?
Wer schon einmal Programmiert hat weiß, dass der Anfang steinig sein kann. Kleine Fehler können frustrieren und vor viel Zeit in Anspruch nehmen. Sie werden mehr rote Fehlermeldungen sehen als Ihnen lieb ist.
Genau deshalb will ich im Laufe der Serie häufigsten Fehler beschreiben und zeigen wie man sie umgeht. Einen guten Überblick über die Syntax bieten eine Kurzreferenz häufig auch“Cheat Sheet“ genannt.
Anwendungsbeispiele für Nicht-Administratoren
Und was kann der normale Anwender mit PowerShell anfangen, das ist doch für Administratoren? Ganz pauschal: Sie müssen sich wiederholende Dinge mit Windows tun, dann könnte PowerShell eine Option sein, z.B.:
- Verschieben, kopieren und Suchen von Dateien.
- Programme ausführen. Starten Sie alle benötigten Programme mit einem Klick.
- Deinstallieren / Installieren. Bereinigen Sie einen PC, z.B. wenn dieser an einen Kunden geliefert werden soll.
- Daten manipulieren. Sie bekommen monatlich CSV Dateien zur Auswertung. Eleminieren Sie Spalten, sortieren Sie die Daten und geben Sie diese neu formatiert aus.
- E-Mails versenden. Zum Beispiel Berichte und Protokolle.
Fazit: Gut für Wiederholungen
Insbesondere bei sich wiederholenden Aufgaben kann PowerShell auch für nicht Administratoren hilfreich sein. Im Lean Office unterstützt es die Standardisierung und Automatisierung von Prozessen. Eine Liste mit Fragen und Antworten rund um PowerShell hat die C’T zusammengestellt.
Nutzen Sie die PowerShell schon?