Absolute Kontrolle mit der Powershell

16. März 2010

Unser Fachmann Mark Minasi hat bereits in seinem Artikel zum Softwarewerkzeug DISM (ist nur für die Abonnenten von NT4admins zugreifbar) einige der neuen Möglichkeiten demonstriert, die dem Systemverwalter bei den aktuellen Windows-Server-Versionen zur Verfügung gestellt werden.

Neben diesen Kommandozeilen-Tools existieren nun auch drei neue Powershell-Cmdlets, die den Administrator bei seinen täglichen Aufgaben entlasten sollen.

Bild 1. Das Arbeiten über die Systemsteuerung ist kaum noch nötig: Mit den aktuellen Server-Versionen hat Microsoft den Administratoren mit dem Server-Manager ein sehr umfangreiche „Zentrale“ zur Verfügung gestellt.

Mit dem Windows Server 2008 haben die Microsoft-Entwickler auch den gesamten Prozess der Server-Verwaltung verändert: So verwendet der Administrator nun nicht mehr die Systemsteuerung, wie er es bisher bei allen Windows-Versionen gewohnt war, wenn er dem System Features hinzufügen möchte oder diese entfernen will. Der Server-Manager (Bild 1) stellt als neues Snap-In für die MMC fast alle benötigten Einstellmöglichkeiten zur Verfügung.

Zusätzlich steht ihm mit dem Werkzeug „Deploy Image Servicing and Management (DISM)“ eine weitere mächtige Lösung zur Verfügung. Diese Software soll die bisherigen (aber noch vorhandenen) Kommandozeilen-Programme „Servermanagercmd“ und „OCSetup“ auf den Server-Versionen zu ersetzen. Ergänzt werden diese Konfigurations- und Einstellmöglichkeiten durch drei ebenfalls neue Cmdlets für die Powershell.

Mehr Möglichkeiten für den Administrator: Steuerung der Features durch Powershell

Der Windows Server 2008 R2 wird von Microsoft standardmäßig zusammen mit der Version 2.0 der Powershell ausgeliefert. Dazu kommt ein ebenfalls mitgeliefertes Modul mit der Bezeichnung „ServerManager“, das nach seinem Import drei Cmdlets zur Verfügung stellt:

get-windowsfeature,
add-windowsfeature
remove-windowsfeatures.

Bild 2. Die Powershell-Kommandozeile mit Administratorrechten: Nur mit ihren Einsatz gelingt es auch, das zusätzlich Modul „Servermanager“ richtig einzubinden und die drei vorgestellten Cmdlets zu nutzen.
Bild 3. Einen Rollen-Dienst per Cmdlet starten oder wieder entfernen: Diese Aufgabe kann auf diese Art und Weise leicht von der Kommandozeile aus erledigt werden.

Im Prinzip führen diese drei Kommandos die gleichen Aufgaben aus, die von diesen drei bekannt DISM-Kommandos erledigt werden können:

dism /online /get-features,
dism /online /enable-feature
dism/online /disable-feature

Allerdings bekommt der Systemverwalter bei Einsatz der Cmdlets und der Powershell noch einige „Extras“ zur Verfügung gestellt, die erst durch die speziellen Eigenschaften dieser Shell möglich werden.

Bevor er jedoch in der Lage ist, diese neuen Cmdlets auf seinem Windows-Server einzusetzen, muss er zunächst eine Powershell-Kommandozeile mit Administratorrechten („elevated prompt“) starten, wie sie in Bild 2 zu sehen ist. In diesem Fenster ist dann der folgende Befehl einzugeben:

import-module servermanger

Danach stehen die Cmdlets des Server-Mangers direkt zur Verfügung, was der folgende Aufruf, dessen Ergebnis ebenfalls in Bild 2 zu sehen ist, sofort zeigt:

get-windowsfeature

Wie der Screenshot aber auch sehr schön zeigt, wird dem Anwender nach diesem Aufruf eine sehr lange Liste mit den Rollen, Rollen-Dienste und Features des jeweiligen Servers angezeigt.

Dabei unterscheiden diese Cmdlets ganz ähnlich dem Tool DISM nicht explizit zwischen Features, Dienste oder Rollen, sondern führt alle Eigenschaften und Möglichkeiten des Systems einheitlich als „Features“ auf. Die Liste zeigt auch die speziellen Name der Features an, die ein Administrator verwenden muss, wenn er eines dieser Merkmale ein- oder ausschalten will. Der folgende Ausschnitt zeigt einige Zeilen einer solchen Auflistung:

[X]    Dateidienste      File-Services
[ ]    Dateiserver       FS-FileServer
[ X ]  DHCP Server       DHCP
[X]    DNS Server        DNS
…            …
[ ]    Faxserver         Fax

Das „X“ auf der linke Seite der Auflistung am Bildschirm zeigt, dass auf unserem Server beispielsweise die Rolle des DHCP- und des DNS-Servers installiert sind, während der Dateiserver sowie der Faxserver nicht installiert wurden. Der Dateiserver ist dabei ein sogenannter Rollen-Dienst (role service), den Microsoft unter Windows Server 2008 R2 als „ein Teil einer bestimmten Rolle“ beschreibt. Die Namen, die vom Kommando auf der rechten Seite ausgegeben werden, sind die Bezeichnungen, die der Systemverwalter übergeben muss, wenn er beispielsweise mit Hilfe des Cmdlets „add-windowsfeature“ einen Rollen-Dienst hinzufügen möchte:

add-windowsfeature fax

Bild 3 zeigt, welche Anzeige das Betriebssystem ausgibt, wenn der Rollen-Dienst erfolgreich in Betrieb genommen wurde. Die Syntax unterscheidet sich dabei kaum von der, die dem Systembetreuer auch mit DISM zur Verfügung steht.

Allerdings besitzt die Powershell hier die für den Anwender sehr angenehme Eigenschaft, nicht Case-Sensitiv zu arbeiten: So kann er hier ohne Probleme „fax“ oder auch „fs-fileserver“ beim Rollen-Dienst angeben, selbst wenn sie bei der Auflistung des Betriebssystems als „Fax“ und „FS-FileServer“ angezeigt werden.

Bild 4. Sicherheitsabfrage: Mit Hilfe der Option „-whatif“ zeigt die Shell, welche möglichen Auswirkungen ein Kommando auf das System hat, ohne dies aktuell auszuführen.

Eine Kleinigkeit, die aber die tägliche Arbeit durchaus erleichtert. Auch die Installation mehrerer Features in einem Kommando gestaltet sich hier einfacher, da sie einfach durch Kommas getrennt werden können:

add-windowsfeature fax, dhcp,  file-services

Wer diese Art der Eingabe mit der umständlichen Syntax des DISM-Befehls vergleicht, bei dessen Einsatz jedem Feature der Schalter „/featurename“ vorangestellt werden muss, kann sicher die Vorliebe unseres Autors für diese PowerShell-Cmdlets verstehen. Auch Leerzeichen hinter den Kommas behindern hier die korrekte Ausführung des Befehls nicht.

Es verwundert dabei etwas, dass Microsoft diese drei so ungeheuer nützlichen Cmdlets nicht auch den Remote-Server Verwaltungstools für Windows 7  hinzugefügt hat, mit dem ja schon ungefähr 70 Cmdlets rund um die Arbeit mit Active Directory ausgeliefert werden.

Sollen Features wieder deinstalliert werden, so kann dazu das Cmdlet „remove-windowsfeature“ verwendet werden, dass mit der gleichen Syntax wie das zuvor geschilderte Kommando arbeitet:

remove-windowsfeature fax,   file-services

Sowohl dieses „remove“- als auch das „add-windowsfeature“-Cmdlet weisen aber noch zwei weitere sehr nützliche Optionen auf, die ein Systemverwalter gut nutzen kann.

Da ist einmal die Option „-whatif“, die sicher denjenigen unter den Anwendern bekannt sein dürfte, die schon häufiger mit der Powershell gearbeitet haben. Die Shell stellt diese Option bei allen Kommandos zur Verfügung, deren Einsatz Veränderungen am Windows-System verursachen kann, wobei deren Auswirkungen vielleicht so nicht geplant oder bedacht wurden.

Wird diese Option beim Aufruf des Kommandos mit angegeben, so wird die Powershell keinerlei Änderungen am System vornehmen, sondern nur aufzeigen (Bild 4), welche Konsequenzen die Ausführung des Befehls in dieser Form auf das System hätte: Eine Art „Airbag“ für den Systemadministrator und ganz sicher eines der besten Features der Powershell.

Verwendet der Systemverwalter bei seinem Powershell-Befehl die zweite Option „-restart“, so erteilt er der Shell damit explizit die Erlaubnis, nach der Ausführung des Befehls einen eventuell notwendigen Neustart des Systems selbstständig auszuführen.

Eine Option, die besonders in Skripts, die zur Automatisierung des Systembetriebs gedacht sind, sehr nützlich sein kann.
Systembetreuer, die sich bis jetzt – aus welchen Gründen auch immer – noch nicht mit der PowerShell und ihren Möglichkeiten bei der Betreuung und Verwaltung eines Windows-Servers befasst haben, sollten einen genaueren Blick auf diese drei Cmdlets werfen und sie ausprobieren. Sie stellen einen guten Einstieg in die vielfältigen Möglichkeiten und Fähigkeiten dieses mächtigen Werkzeugs dar.

Mark Minasi/fms

Lesen Sie auch