Tags: OS Deployment, PowerShell, Windows Server 2012 R2
Seit Windows Server 2008 erbringt ein frisch installiertes System bekanntlich keine Dienste, vielmehr müssen die benötigten Funktionen über Rollen und Features erst aktiviert werden. Auf der GUI ist dafür der Server Manager zuständig. Diese Aufgabe lässt sich aber auch mit PowerShell automatisieren und auf Remote-PCs sowie auf VHDs anwenden.
Der Wizard im Server Manager fügt seit Windows Server 2012 in separaten Schritten sowohl Rollen als auch Features hinzu und überwindet diese relativ willkürliche Unterscheidung. In PowerShell hat sie praktisch keine Bedeutung mehr, weil für das Anzeigen, Hinzufügen sowie Entfernen von Rollen und Features nur jeweils ein gemeinsames Cmdlet existiert.
Eigene Cmdlets für Client und Server
Dafür verläuft in PowerShell eine Trennlinie zwischen Client und Server. Die für den Server erforderlichen Cmdlets werden über die Installation von RSAT eingerichtet, während für indows 8.x eigene Kommandos zur Verfügung stehen, um optionale Features zu verwalten (Get-WindowsOptionalFeature, Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature).
Wenn man sich einen Überblick über die installierten oder verfügbaren Rollen und Features eines Servers verschaffen möchte, dann hilft dabei das Cmdlet Get-WindowsFeature. Ruft man es ohne Argumente auf, dann wirft es eine lange Liste aus, die sämtliche Rollen und Features unabhängig von ihrem Installationsstatus enthält.
Installierte Rollen anzeigen
Will man etwa nur sehen, welche davon bereits hinzugefügt wurden, dann fragt man zusätzlich den Installationsstatus ab:
Get-WindowsFeature | Where installed -eq true
Möchte man gezielt Auskunft über eine bestimmte Rolle erhalten, dann kann man die Ausgabe des Cmdlets auf ihren Namen einschränken:
Get-WindowsFeature -name Web*
Wie viele andere Cmdlets kann man auch Get-WindowsFeature auf Remote-PCs anwenden, indem man deren Namen über den Parameter -Computername spezifiziert. Er akzeptiert allerdings bei jedem Aufruf nur einen Namen, so dass man das Kommando durch eine Schleife laufen lassen muss, wenn eine Liste von Rechnern abgearbeitet werden soll.
Zusätzlich bietet PowerShell die Möglichkeit, die Rollen und Features von Windows Server 2012 (R2) in einer VHD(X) zu verwalten. Dazu übergibt man den Namen und Pfad des virtuellen Laufwerks über den Parameter -vhd. Dies funktioniert jedoch nur, wenn man Get-WindowsFeature auf einem Server aufruft.
Rollen und Features installieren
Das Hinzufügen von Rollen und Features erfolgt nach dem gleichen Muster wie das Anzeigen, nur dass dafür Install-WindowsFeature zuständig ist und man dafür eine PowerShell mit administrativen Rechten benötigt. Dazu übergibt man dem Cmdlet den Namen der Rolle oder des Features.
Dabei muss man beachten, dass hier nicht der übersetzte deutsche Anzeigename erwartet wird, sondern jener, den Get-WindowsFeature in der Spalte Name ausgibt. Anders als bei Get-WindowsFeature ist dabei die Verwendung von Wildcards nicht erlaubt, aber man könnte stattdessen die Ausgabe von Get-WindowsFeature über eine Pipe an Install-WindowsFeature weiterleiten.
Sub-Features und Management-Tools
Die umfangreicheren Rollen besitzen mehrere Sub-Features, von denen die erforderlichen automatisch hinzugefügt werden. Dagegen überspringt Install-WindowsFeature grundsätzlich die Installation der Verwaltungs-Tools.
Möchte man eine Rolle komplett mit allen Funktionen einrichten, dann gibt man zusätzlich den Schalter -IncludeAllSubFeature an. Es ist aber auch möglich, später jedes einzelne Sub-Feature über seinen Namen separat hinzuzufügen. Sollen darüber hinaus die Management-Tools installiert werden, dann ist dafür der Parameter -IncludeManagementTools zuständig.
Rollen zu Windows Server in VHD hinzufügen
Das Cmdlet für das Hinzufügen von Rollen operiert ebenfalls auf Offline-Installationen von Windows Server, die in VHDs gespeichert sind. Wie bei Get-WindowsFeature gibt man dazu den Pfad zur VHD(X) über den Parameter -vhd an, und auch hier ist eine Ausführung des Befehls auf einem Server erforderlich:
Install-WindowsFeature -name Telnet-Server -vhd \\server\share\WS2012R2.vhdx"
Wenn man eine Rolle oder ein Feature auf die exakt gleiche Weise auf mehreren Rechnern aktivieren möchte, dann kann man Install-WindowsFeature über den Parameter -ConfigurationFilePath eine Konfigurationsdatei übergeben. Diese exportiert man aus dem Wizard im Server Manager, nachdem man alle Schritte durchlaufen hat und beim Bestätigungsdialog angelangt ist.
Angenommen, die Variable $servers enthält eine Liste von Servern, auf denen remote eine Rolle in identischer Form hinzugefügt werden soll, dann kann man Install-WindowsFeature so aufrufen:
foreach($server in $servers) {Install-WindowsFeature -ConfigurationFilePath ConfigFile.xml -ComputerName $server}
Rollen und Features entfernen
Das Entfernen von Rollen und Features schließlich übernimmt das Cmdlet Uninstall-WindowsFeature. Es erfordert die Angabe ihres Namens, entweder explizit über den Parameter -Name oder über eine Pipe, durch die man die Ausgabe von Get-WindowsFeature schleust.
Auch dieses Cmdlet unterstützt den Parameter -vhd und kann Features auf Remote-PCs entfernen. Gibt man zusätzlich den Schalter -Remove an, dann werden alle zur deinstallierten Rolle gehörigen Dateien gelöscht.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Windows-Images mit OSDBuilder automatisch offline aktualisieren
- Spracheinstellungen und Tastatur-Layout in Windows Server ändern mit PowerShell
- Statt DISM: Images mounten, Packages und Features verwalten mit PowerShell
- Convert-WindowsImage: Windows automatisch in einer VHDX installieren
- Deployment Rules für Auto-Deploy mit PowerCLI erstellen
Weitere Links