Open Source im professionellen Einsatz
Linux-Magazin 12/2006
© photocase.com

© photocase.com

Microsofts Powershell kurz vor ihrer Fertigstellung

Muschelzucht im Ausland

Microsoft veröffentlicht demnächst eine Admin-Shell für Windows, die diesen Namen auch verdient. Beim Pipelining verhält sich die Powershell unter Umständen sogar robuster als die Unix-Pendants, weil sie typisierte Objekte durchreicht.

728

Windows ist der Inbegriff für (bunte) grafische Oberflächen, die ohne Maus faktisch unbedienbar sind. Des Einsteigers Freud ist des Admin Leid, wenn er sich bei wiederkehrenden Alltagsaufgaben die Finger wund klickt. Denn die mit Windows gelieferte Kommandozeilen-Schnittstelle ist seit DOS-Zeiten kaum verändert und funktional ein Torso.

Erkannt hat Microsoft dieses Problem bereits Ende der 90er Jahre. Damals entstand der Windows Script Host (WSH), anfangs auch Windows Scripting Host genannt. Mit dem WSH übertrug Microsoft das zu dieser Zeit aufkommende Browser-Scripting mit Javascript und VBscript auf das Betriebssystem. Technisch basiert der WSH auf dem Component Object Model (COM), einem Softwarekomponenten-Modell, das viele Windows-Anwendungen und auch Teile des Betriebssystems verwenden.

Positiv am WSH ist, dass der Administrator sowohl Windows-Systemdienste als auch Anwendungen wie Word, Excel und Powerpoint mit den gleichen Instrumenten steuern kann. So sind Skripte möglich, die den Zustand von Windows in Excel oder Word dokumentieren. Negativ ist, dass der Administrator zum Erreichen dieser Ziele ein breites Wissen über objektorientiertes Programmieren und Softwarekomponenten braucht, denn COM richtet sich an Programmierer, nicht an Administratoren.

Von Unix-Admins gelernt

Im Zuge der Entwicklung von Windows Server 2003 gab Microsoft eine Studie in Auftrag, bei der Unix-Administratoren gefragt wurden, welche Werkzeuge sie benutzen. Als kurzfristige Folge - Linuxer wundert\'s kaum - hat Microsoft die Anzahl der Kommandozeilen-Werkzeuge im Server kräftig erhöht. Langfristig entwickelte der Konzern über die Zwischenstufen Monad sowie Microsoft Shell (MSH) eine neue Kommandozeilen-Schnittstelle, die Powershell.

Derzeit gibt es sie als Release Candidate 2, was bei Microsoft bedeutet, dass fast alle angepeilten Funktionen enthalten sind. Bis zur endgültigen Version, geplant für das Jahresende 2006, sind noch kleinere Polituren zu erwarten. Die Powershell ist nicht Teil eines Betriebssystems, auch nicht des kommenden Windows Vista, sondern ein kostenfreies Zusatzprodukt. Die aktuelle Vorabversion findet gibt\'s unter [1].

Auf den ersten Blick (Abbildungen 1 und 3) präsentiert sich das Produkt wie ein klassisches DOS-Kommandozeilenfenster. Unter der Haube steckt aber mehr, beispielsweise bessere Eingabehilfen (Tab Completion). Einen echten Editor liefert Microsoft jedoch nicht. Hier sind bereits Drittanbieter ([2], [3]) aktiv.

Abbildung 1: »ps axu« lässt grüßen: »get-process« listet die laufenden Prozesse im System.

Die Befehle in der Powershell heißen Commandlets und sind nach einer Namenskonvention aufgebaut: Sie bestehen immer aus einem Verb und einem Substantiv, zum Beispiel »get-service«, »start-service«, »get-process« oder »select-object«. Eine Parameterliste ist optional. Sind die Parameter unbenannt, dann entscheidet die Reihenfolge, sind sie benannt, muss der Windows-Benutzer dem Parameternamen einen Strich voranstellen. Bei den Parameterwerten sind Platzhalter wie »*« und »?« sowie »[Menge]« erlaubt. Die Groß- und Kleinschreibung ist irrelevant.

Commandlets konkret

Mit dem folgenden Befehl erhält der Administrator eine Liste der laufenden Prozesse, die mit »I« oder »i« anfangen:

get-process -name i*


Ohne die Benennung des Parameters (»get-process i*«) gibt es das gleiche Ergebnis, wie Abbildung 1 nahe legt. Für viele Commandlets sind Aliase definiert, um den Befehl kürzer ausdrücken zu können: »gps i*« oder »ps i*«. »get-alias« listet Aliase, »set-alias« legt einen eigenen an (siehe Tabelle 1).

Tabelle 1:
Syntax-Vergleich zur Bash

 

Funktion

Bash

Powershell

Powershell-Alias

Kommentar

#

#

-

Hilfe

man, info

get-help

help

Ausgabe

echo

Einfacher Ausdruck oder zahlreiche Commandlets, die mit
»write« beginnen

-

Variablen

$

$

-

Pipe

|

|

-

Hintergrundverarbeitung

&

Möglich nur über komplizierten

Zugriff auf Dotnet-Klassen

-

Platzhalter und

reguläre Ausdrücke

*, ?, [ ], ~

*, ?, [ ], -match

-

Ersetzen

gawk

-replace

-

Einbinden von Skripten

».«

».«

-

Bedingung

if [ Bedingung ] ? fi

if ( Bedingung ) { ? }

-

Schleife mit Bedingung

while [ Bedingung ]

do ? done

while (Bedingung) { ? }

-

Schleife über Menge

for x [ in Liste ]

do ? done

foreach-object x { ? }

(Bezug ist der Pipeline-Inhalt)

-

Umlenkung

>, <

>, < und diverse »import...«

und »export...«- Commandlets

-

Verzeichnis auflisten

ls, dir

get-childitem

ls, dir

Verzeichnis anlegen

mkdir

new-item

md, mkdir

Verzeichniswechsel

cd

set-location

cd

Datei-Inhalte anzeigen

cat

get-content

cat, type, gc

Datei löschen

rm

remove-item

del, ri, rm, erase, rd

Prozessliste

ps

get-process

ps, gps

Filtern

grep, sed, head, tail,

find, cut

where-object,

select-object

where, select

Zählen/Berechnen

wc, du, etc.

measure-object

-

Sortieren

sort

sort-object

sort

Aktuelles Datum

date

get-date

-

Befehlsgeschichte

history

get-history

history, h

Alias anlegen

alias

set-alias

alias

Ein weiteres Beispiel für ein Commandlet: Mit »stop-process -name iexplore*« entledigt sich der Anwender aller laufenden Instanzen des Internet Explorers. Beim Einstieg in die Powershell sind wichtig: »get-command« liefert eine Liste aller Commandlets, »get-help« oder »help« leistet Hilfe zu einem Commandlet, so beispielsweise »get-help get-service«. »get-help get« zeigt alle Commandlets, die mit »get« anfangen.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Powershell

    Microsoft stellte seine Powershell im August 2016 unter eine freie Lizenz und portierte das Werkzeug im Vorübergehen gleich noch auf Linux und Mac OS. Ist das nun nur ein Marketing-Trick oder eine echte Hilfe, womöglich sogar eine Konkurrenz zu den Linux-Shells?

  • Microsoft gibt Powershell für Linux frei

    Microsoft hat seine Automatisierungsplattform Powershell unter einer MIT-Lizenz freigegeben und auf Linux und Mac portiert.

  • Microsoft portiert Powershell Desired State Configuration auf Linux

    Microsoft hat die Powershell Desired State Configuration Version 1 für Linux veröffentlicht. Mit der Plattform lassen sich die Konfigurationen von Windows- und Linux-Systemen mit einem einheitlichen Interface managen.

  • Microsoft portiert Powershell DSC für Linux

    Microsoft hat die Powershell Desired State Configuration Version 1 für Linux veröffentlicht. Mit der Plattform lassen sich die Konfigurationen von Windows- und Linux-Systemen mit einem einheitlichen Interface managen.

  • Microsofts Powershell mit Open-SSH-Support

    Microsofts Powershell-Team hat angekündigt, künftig Open SSH unterstützen zu wollen. Das soll unter anderem die Interaktion mit Linux verbessern, ist aber nicht der erste Versuch in diese Richtung.

comments powered by Disqus

Ausgabe 08/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.