Objekte tunneln

Die PowerShell unterscheidet sich von einer klassischen Unix-Shell durch die Beförderung von typisierten Objekten in den Pipelines. Die erste Folge dieses Tutorials erklärt die Grundkonzepte und zeigt die Mächtigkeit des Ansatzes für den Systemadministrator.

vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 3 Min.
Von
  • Dr. Holger Schwichtenberg

Derzeit liegt die PowerShell noch keinem Betriebssystem von Hause aus bei - für Vista kam sie ein paar Wochen zu spät, sie lässt sich bei Microsoft aber kostenlos herunterladen und auf Vista, XP sowie dem 2003-Server installieren. Auf den beiden letztgenannten muss vorher ein .Net Framework 2.0 installiert sein. Ratsam ist zudem die Installation der PowerShell Community Extensions (PS X) und des Editors PowerShell IDE. Von Microsoft gibt es noch keine Integration ins Visual Studio oder einen anderen Editor.

Ein einfaches Commandlet in der PowerShell (Abb. 1)

Wenn man nach dem Installieren die PowerShell zum ersten Mal startet, könnte man enttäuscht sein, denn sie präsentiert sich ähnlich einfach wie das klassische Windows-Kommandozeilenfenster (siehe Abbildung 1).

Ein einzelner Befehl der PowerShell heiĂźt Commandlet (kurz: Cmdlet). Ein Commandlet besteht typischerweise aus drei Teilen:

  • einem Verb,
  • einem Substantiv und
  • optional einer Parameterliste.

Verb und Substantiv sind durch einen Bindestrich „-“ voneinander zu trennen, die optionalen Parameter durch Leerzeichen. Die Groß- und Kleinschreibung ist bei den Commandlet-Namen nicht relevant. Die Parameter müssen nur dann in Anführungszeichen stehen, wenn Leerzeichen (zum Beispiel in einem Dateisystempfad) vorkommen.

Ein einfaches Beispiel ohne Parameter lautet: Get-Process. Das Commandlet lieferte eine Liste der laufenden Prozesse. Andere Beispiele sind Get-Service (installierte Systemdienste) und Get-ADObject (Einträge im Active Directory). Dabei ist zu beachten, dass Get-ADObject nicht zum Standardumfang der PowerShell gehört, sondern Teil der oben erwähnten PSCX ist.

Durch Angabe eines Parameters kann der Administrator bei den meisten Commandlets die Liste beschränken, so zeigt

Get-Process i*

nur diejenigen Prozesse an, deren Name mit „i“ beginnen,

Get-service -exclude "[k-z]*"

nur die Systemdienste, deren Name nicht mit den Buchstaben „k“ bis „z“ beginnen. Auch mehrere Parameter können der Einschränkung dienen. Der folgende Befehl liefert nur die Benutzereinträge aus einem bestimmten Active-Directory-Pfad:

Get-ADObject -dis
"LDAP://ServerEssen02/ou=
PowerShellDozenten,dc=IT-Visions,dc=de"
-class user

Wenn ein Commandlet mehrere Parameter besitzt, ist die Reihenfolge der Parameter entscheidend oder man muss die Namen der Parameter mit angeben. Alle folgenden Befehle sind gleichbedeutend:

Get-ADObject -dis
"LDAP://ServerEssen02/ou=
PowerShellDozenten,dc=IT-Visions,dc=de"
-class user

Die PowerShell-Konsole unterstützt bei der Eingabe durch Tabulatorvervollständigung, sowohl bei Commandlets (zum Beispiel Get-[TAB]) als auch bei den Parametern (zum Beispiel Get-Service [Leerzeichen, TAB]).

Noch komfortabler ist die Eingabe mit der PowerShell IDE, die eine ähnliche Eingabehilfe wie Visual Studio 2005 bietet. Die PowerShell IDE ist zwar kostenlos, aber noch unfertig. Ein kommerzieller Editor ist PrimalScript 4.1 von Sapien. Allerdings bietet dieser Editor weit weniger Eingabehilfen als die PowerShell IDE.

Den vollständigen Artikel finden Sie in der aktuellen Printausgabe. (wm)