Tags: PowerShell
Mit PowerShell hat Microsoft der „guten alten“
cmd.exe
einen mächtigen Nachfolger verschafft, und deren Anwendung und Beherrschung wird für Administratoren Pflicht: Für Microsoft-Server-Software wie Exchange oder SQL wird die Möglichkeit der Administration per PowerShell Standard, und wer Windows Server Core verwenden will, kommt trotz der Möglichkeit, einige grundlegende administrative Arbeiten auch mit grafischen Tools zu erledigen, ohne PowerShell-Kenntnisse nicht besonders weit.
PowerShell bietet vollen Zugriff auf COM und WMI, um administrative Arbeiten am lokalen und an entfernten Rechnern zu ermöglichen. Bisherigen cmd.exe
- und VBScript-Anwendern wird die Bedienphilosophie anfangs ein wenig fremd vorkommen. Folgende Tipps verhelfen zu einem raschen Einstieg.
PowerShell 2.0 installieren
Die aktuelle Version von PowerShell ist 2.0. Sie ist Bestandteil von Windows 7 und Windows Server 2008 R2. Für Windows XP SP3, Windows Vista SP1, Windows Server 2003 SP2 und Windows Server 2008 kann sie hier heruntergeladen werden, sowohl als 32-Bit- als auch als 64-Bit-Version.
Microsoft bietet zu PowerShell 2.0 die komplette Referenz im TechNet an. Ein sehr guter Einstieg, um sich mit der Shell und ihren Prinzipien vertraut zu machen und etwas Beispiel-Code einzusehen, ist auch Microsofts PowerShell-Scriptcenter.
PowerShell-Scripts zulassen
Unmittelbar nach dem Speichern seines ersten Scripts wird der neue PowerShell-Anwender feststellen, dass es sich nicht ausführen lässt. PowerShell ist per Voreinstellung sicher und führt nur direkt eingegebene Befehle, aber keine Scripts aus. Dies muss man erst ermöglichen, indem man innerhalb einer mit Administrator-Rechten aufgerufenen PowerShell die execution policy mittels des Befehls
Set-ExecutionPolicy ‹policy›
festlegt. Der Wert für ‹policy›
ist per Voreinstellung Restricted
, das heißt PowerShell führt Scripts nicht aus. Weitere mögliche Parameter, mit denen man die Ausführung zulassen kann, sind:
- AllSigned
- Führt alle Scripts mit einer digitalen Signatur aus. Wenn die signierende Stelle nicht bekannt ist, fragt PowerShell per Prompt, ob dem Herausgeber vertraut werden soll.
- RemoteSigned
- Erfordert eine digitale Signatur für aus dem Internet heruntergeladene Scripts, lokal erstellte Scripts werden immer ausgeführt.
- Unrestricted
- Führt alle Scripts aus; für nicht signierte, aus dem Internet heruntergeladene Scripts wird eine Warnung ausgegeben.
Den gegenwärtigen Status erfährt man mit
Get-ExecutionPolicy
Um zu unterscheiden, welche Scripts aus dem Internet stammen, bedient sich PowerShell der NTFS-Streams, die dies auch für andere heruntergeladene ausführbare Dateien anzeigen. Man kann diesen Stream von einer Datei entfernen, indem man per Kontextmenü ihre Eigenschaften aufruft und auf der Registerkarte „Allgemein“ die Schaltfläche Zulassen betätigt.
PowerShell mittels Gruppenrichtlinien zulassen
Wenn man die Ausführungsrichtlinien nicht nur auf einzelnen, sondern auf einer größeren Zahl von PCs ändern möchte, dann empfiehlt sich der Einsatz von GPOs. Unter Computer- sowie Benutzerkonfiguration => Richtlinien => Administrative Vorlagen => Windows-Komponenten => Windows-PowerShell findet sich die Einstellung Scriptausführung aktivieren.
Sie bietet die drei weiter oben beschriebenen Ausführungsrichtlinien zur Auswahl, die man bei Set-ExecutionPolicy als Argument angibt. Im deutschen Windows sind die drei möglichen Werte lokalisiert und heißen "Nur signierte Scripts zulassen", "Lokale Scripts und remote signierte Scripts zulassen" sowie "Alle Scripts zulassen".
PowerShell-Scripts ausführen
Gegenüber dem Ausführen eines Scripts etwa in cmd.exe
gibt es bei PowerShell noch zwei weitere wichtige Unterschiede:
- Powershell führt nur Scripts aus, die sich in der Umgebungsvariablen
PATH
befinden. Im aktuellen Verzeichnis befindliche Scripts fallen nicht darunter und müssen gegebenenfalls in der Form.\script.ps1
aufgerufen werden. - Leerzeichen in Datei- und Verzeichnisnamen können nicht einfach in Anführungszeichen eingeschlossen werden, PowerShell interpretiert dies dann als String und gibt den Script-Aufruf einfach als Ausgabe zurück.
Vor wegen Leerzeichen in Anführungszeichen eingeschlossene Datei- und Verzeichnisnamen muss deshalb stets der Ausführungsoperator
&
, damit PowerShell weiß, dass der nun folgende String ausgeführt werden soll. Die Shell hilft hier allerdings mit und setzt bei der Tab-Vervollständigung von Datei- und Verzeichnisnamen bei Bedarf sowohl die Anführungszeichen als auch das &.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
Weitere Links