Tipps und Skripte

Hyper-V, Citrix und VMware per PowerShell verwalten

07.04.2015 von Thomas Joos
Virtualisierungslösungen wie Microsofts Hyper-V oder Produkte von VMware oder Citrix lassen sich ganz trefflich mit der PowerShell verwalten. Dabei helfen Erweiterungen oder kostenlose Skripte sowie Tipps, die folgender Beitrag erläutert.

Damit Sie mit der PowerShell von einem Rechner im Netzwerk auf die einzelnen Virtualisierungslösungen zugreifen können, gilt es, einige kleine Voraussetzungen dafür zu schaffen. In Windows 8.1 und Windows Server 2012 R2 müssen Sie für die Verwaltung von Hyper-V über die PowerShell oder der grafischen Oberfläche die Remoteserver-Verwaltungstools und die Verwaltungswerkzeuge von Hyper-V installieren.

Für Citrix XenServer stellt der Hersteller eine eigene Erweiterung für die PowerShell zur Verfügung. Sie müssen das XenServer PowerShell SDK auf dem Rechner installieren, mit dem Sie eine Verbindung aufbauen wollen. Den Download finden Sie in den Dateien Ihres Citrix-Kontos. Nachdem Sie das SDK installiert haben, können Sie von dem entsprechenden Rechner aus Citrix verwalten. Wie das geht, zeigen wir Ihnen im Folgenden.

Um VMware mit der PowerShell zu verwalten, benötigen Sie auf dem entsprechenden Rechner ebenfalls eine Erweiterung, PowerCLI genannt. PowerCLI laden Sie bei VMware herunter. Viele Skripte für VMware sind auch im PowerShell Code Repository zu finden. Wollen Sie sich intensiver mit der PowerCLI auseinandersetzen, empfehlen wir Ihnen noch das offizielle VMware-Support-Forum für PowerCLI. Den Blog der PowerCLI-Entwickler finden Sie auf der Seite von VMware ebenfalls. Eine weitere wertvolle Seite für eine Einarbeitung in PowerCLI finden Sie hier. Einige interessante Beiträge lesen Sie auch auf powercli.de.

Einige Skripts und Hinweise zur Verwaltung von VMware mit der PowerCli erhalten Sie auch in diesem Beitrag.

Bildergalerie:
Virtualisierungslösungen per PowerShell verwalten
Vor der Verwendung von PowerCLI müssen Sie die Ausführungsrichtlinie des Servers erst entschärfen.
Virtualisierungslösungen per PowerShell verwalten
Sie können die Verbindung zu VMware auch mit selbstsignierten Zertifikaten aufbauen.
Virtualisierungslösungen per PowerShell verwalten
Mit Get-VICommand erhalten Sie eine Liste der zur Verfügung stehenden Befehle.
Virtualisierungslösungen per PowerShell verwalten
Das Skript zum automatischen Herunterfahren von VMs in VMware können Sie in der PowerShell ISE an Ihre Bedürfnisse anpassen.
Virtualisierungslösungen per PowerShell verwalten
Citrix XenServer verwalten Sie in der PowerShell über ein eigenes Modul.
Virtualisierungslösungen per PowerShell verwalten
Auch Citrix Xen Server können Sie in der PowerShell verwalten. Alles was Sie brauchen ist das Xen SDK.

Sicherheit in der PowerShell beachten

In der PowerShell ist die sogenannte Ausführungsrichtlinie für Skripte gesetzt. Die Ausführungsrichtlinie bestimmt, ob Skripts ausgeführt werden dürfen und ob diese digital signiert sein müssen. Standardmäßig blockiert die PowerShell Skripts. Sie können die Ausführungsrichtlinie mit dem Cmdlet Set-ExecutionPolicy ändern und mit Get-ExecutionPolicy anzeigen. Dabei stehen folgende Einstellungen zur Verfügung:

Restricted - Standardeinstellung. Keine Skripts erlaubt.

AllSigned - Nur signierte Skripts sind erlaubt.

RemoteSigned - Bei dieser Einstellung müssen Sie Skripts durch eine Zertifizierungsstelle signieren lassen.

Unrestricted - Mit dieser Einstellung funktionieren alle Skripts.

Damit die PowerShell-Veraltungswerkzeuge von Citrix und VMware funktionieren, müssen Sie die Ausführungsrichtlinie bearbeiten.

Hyper-V und die PowerShell

Natürlich arbeiten die PowerShell und Hyper-V umfassend zusammen. Alles, was Sie benötigen, sind die Remoteserver-Verwaltungs-Tools für Hyper-V und einen Rechner mit Windows 8.1 oder Windows Server 2012 R2. Neben den Standard-CMDlets können Sie auch hier mit Skripten arbeiten.

Da Hyper-V ebenfalls Bestandteil von Windows 8.1 Pro/Enterprise ist, können Sie die Skripte auch in diesem Bereich auf Test-Arbeitsstationen nutzen. Ein kleines Skript kann zum Beispiel Hyper-V in Windows 8.1 direkt in der PowerShell installieren:

Get-WindowsOptionalFeature -Online -FeatureName *hyper-v*all | Enable-WindowsOptionalFeature -Online

Mit diesem Befehl können Sie eine Testumgebung aufbauen. Sie können dazu den Befehl in einem Skript verwenden und dieses auch noch ausbauen. In der TechNet finden Sie dazu ein passendes Beispiel-Skript.

Es gibt aber eine Vielzahl weiterer Skripts für Hyper-V, die bei der Verwaltung der Virtualisierungsumgebung helfen:

Deleting a snapshot sub-tree-via PowerShell - Das Skript löscht alle Snapshots eines virtuellen Servers auf einmal.

Script to attach a USB device to a virtual machine - Das Skript kann die Anbindung von USB-Festplatten direkt an VMs über die PowerShell durchführen.

PowerShell Management Library for Hyper-V - Hier erhalten Sie einige Erweiterungen für Hyper-V, die zumindest in den Vorgängerversionen von Windows Server 2012 R2 noch nicht enthalten waren.

GUI Hyper-v Manager for Server 2012 core console using Powershell - Das Skript bietet die Möglichkeit, Core-Server in Hyper-V über eine grafische PowerShell-Oberfläche zu verwalten.

PowerShell für VMware

Für PowerCLI muss auf dem Rechner mindestens das .NET Framework 2.0 installiert sein. In Windows 8.1 verwenden Sie dazu am besten den Assistenten zum Hinzufügen von Windows-Komponenten. Diesen starten Sie über die Eingabe von optionalfeatures auf der Startseite von Windows 8.1.

Verbindungssache: Sie können die Verbindung zu VMware auch mit selbst signierten Zertifikaten aufbauen.
Foto: Thomas Joos

Wenn Sie PowerCLI heruntergeladen und auf dem Server installiert haben, können Sie in der Konsole eine Verbindung aufbauen. Starten Sie zunächst die Verknüpfung der PowerCLI. Haben Sie PowerCLI gestartet, müssen Sie zunächst mit Connect-VIServer eine Verbindung zum ESX-Host oder einem vCenter-Server aufbauen. Mit Connect-VIServer -Server <IP-Adresse> -Protocol https -User <Benutzername> -Password <Kennwort> bauen Sie eine Verbindung auf.

Allerdings sollten Sie bei der professionellen Verwendung von Skripten die Meldung der Zertifikate ausschalten. Dazu rufen Sie PowerCLI mit Administratorrechten auf und geben den folgenden Befehl ein:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore

Erhalten Sie eine positive Rückmeldung, funktioniert die Anbindung, und Sie können mit der PowerShell des lokalen Rechners auf vSphere zugreifen. Achten Sie aber darauf, vor der Ausführung der PowerCLI und der Verwendung der Skripte zunächst die Ausführungsrichtlinie zu konfigurieren. Dazu müssen Sie erst eine normale PowerShell-Sitzung mit Administratorrechten starten. Mit Get-VICommand werden alle verfügbaren Befehle für VMware angezeigt.

Auf der Seite Virtu-Al.Net finden Sie eine umfangreiche Liste verschiedener Skripte. Für jedes Skript erhalten Sie auf der Seite eine umfassende Hilfe, eine Beschreibung und einen Download-Link.

Geht es um die automatisierte Bereitstellung mehrerer virtueller Maschinen, sollten Sie sich das Skript auf der Seite VMwaremine ansehen. Es ist vor allem bei der Erstellung einer großer Anzahl von VMs sehr hilfreich.

Das Skript "PowerCLI script to report Guest OS disk usage" gibt Ihnen eine gute Übersicht zum Datenspeicher in VMware. Vor allem, wenn der Platz ausgeht und Sie wissen wollen, welche VM wie viel Platz benötigt, ist das Skript eine wertvolle Hilfe.

Geht es um die Berichte-Erstellung in VMware, hilft Ihnen das Skript "PowerCLI - vulnerability report script". Es erzeugt eine CSV-Datei und kann den Sicherheitsbericht auch per E-Mail versenden. In diesem Zusammenhang spielt auch das Skript "PowerCLI script to report and change host NTP settings" eine wichtige Rolle. Es informiert über die Zeiteinstellungen des Hosts und deren Auswirkungen auf die VMs.

Aber auch für die Hochverfügbarkeit mit vMotion gibt es Skripte, um zum Beispiel VMs zwischen Clusterknoten zu verschieben. Das Skript "PowerCLI - vMotion VM between clusters" migriert VMs, Switches und Speicher zwischen Knoten.

VMware-Skripte über Batch-Dateien und Aufgabenplanung starten

Sie können Skripte in VMware auch über eine Batch-Datei auf dem Rechner starten. Dazu müssen Sie einfach die PowerShell über die Batch-Datei starten, das VMware-Modul laden und anschließend das Skript starten lassen. Dazu verwenden Sie zum Beispiel folgende Syntax:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -command "<Pfad zur ps1-Datei"

Um das Skript zu starten, müssen Sie dann nur noch die Batch-Datei doppelklicken. Wenn Sie die Skripte oder Batch-Dateien über die Windows-Aufgabenplanung starten wollen, hilft ein weiteres Skript bei der Einrichtung. Die Anleitung dazu finden Sie hier.

Automatisches Herunterfahren aller Server per Skript

Wenn Sie sich bereits ein wenig mit PowerCLI auseinandergesetzt haben, können Sie sich das Skript zum automatischen Herunterfahren aller VMs und Server im Netzwerk ansehen.

Individualisierung: Das Skript zum automatischen Herunterfahren von VMs in VMware können Sie in der PowerShell ISE an Ihre Bedürfnisse anpassen.
Foto: Thomas Joos

Sinnvoll ist der Einsatz, wenn Sie größere Wartungsmaßnahmen durchführen wollen oder ein Stromausfall nicht durch die USV abgefangen werden kann. Wenn Sie das Skript heruntergeladen und an Ihre Bedürfnisse angepasst haben, können Sie es im Notfall jederzeit verwenden, um die VMs in der Reihenfolge herunterfahren zu lassen, in der Sie diese in vCenter/ESX festgelegt haben. Erkennt das Skript, dass sich einige VMs nicht herunterfahren lassen, werden diese nach einiger Zeit automatisch ausgeschaltet.

Wie Sie bei der Verwendung vorgehen, lesen Sie direkt auf der Download-Seite des Entwicklers. Die notwendigen Daten können Sie auch über PowerShell ISE in das Skript eintragen und danach speichern. Natürlich können Sie das Skript mit eigenen Befehlen erweitern.

Citrix XenServer mit PowerShell verwalten und per Skript automatisieren

Ähnlich wie bei VMware mit der PowerCLI brauchen Sie auch für die PowerShell-Verwaltung von Citrix XenServer eine Erweiterung. Dazu melden Sie sich mit Ihrem Citrix-Konto an und suchen nach Citrix PowerShell SDK. Laden Sie sich die neueste Version herunter, und installieren Sie diese auf einem Rechner.

Voraussetzung: Auch Citrix Xen Server können Sie in der PowerShell verwalten. Alles, was Sie brauchen, ist das Xen SDK.
Foto: Thomas Joos

Eine Verbindung zum XenServer brauen Sie mit Connect-XenServer auf. Eine Liste aller VMs erhalten Sie mit Get-XenVM. Um XenServer ein wenig zu automatisieren, können Sie dieses Skript nutzen. Es verbindet sich mit Xen und ruft wichtige Informationen zu den VMs ab. Dadurch wird vermieden, dass Fehler das Skript zum Absturz bringen, wenn etwas nicht funktioniert.

Sie starten die PowerShell mit den Citrix-CMDlets über eine eigene Verknüpfung. Alle Befehle zeigen Sie mit Get-CtxCommand an.

In der Microsoft-TechNet-Gallery finden Sie ebenfalls das eine oder andere PowerShell-Skript für XenServer. "XenServer Updatescript" von Citrix installiert per Skript mehrere Patches auf einmal. Das ist bei der Installation und Verwaltung recht hilfreich, da Sie nicht mehr Skripte einzeln installieren müssen. Auch dieses Skript können Sie selbst erweitern. (mje)