Hyper-V-Host mit PowerShell (remote) konfigurieren, vSwitch hinzufügen

    Hyper-V-HostWenn man des Öfteren Hyper-V-Hosts auf­setzen muss, dann lohnt es sich, diesen Vor­gang mit PowerShell zu automa­tisieren. Dabei lassen sich über ein Script alle not­wen­digen Schritte remote erle­digen, von der Instal­lation der Rolle über die Konfi­guration der Host-Ein­stellungen bis zum Anlegen eines virtuellen Switches.

    Der erste Schritt beim Einrichten eines Hyper-V-Hosts besteht im Hinzufügen der Rolle. Dies erfolgt mit Hilfe von Install-WindowsFeature. Dieser Beitrag beschreibt das Vorgehen ausführlich für Server 2012, das Procedere hat sich in der Version 2016 nicht geändert. Der Aufruf wird in den meisten Fällen so aussehen:

    Install-WindowsFeature Hyper-V -ComputerName MyHost -Restart

    Nach dem Neustart des Servers ist dieser mit den Standard­werten von Hyper-V konfiguriert. Diese lassen sich mit

    Get-VMHost -ComputerName MyHost| select -Property *

    anzeigen.

    Einstellungen des Hosts ändern mit Set-VMHost

    Einige davon wird man in den meisten Fällen nicht belassen wollen, etwa die Standard­pfade zum Speichern der VMs und der virtuellen Laufwerke. Sie zeigen per Vorgabe auf das System­laufwerk. Zuständig für das Ändern der Host-Konfiguration ist das Cmdlet Set-VMHost.

    Die Parameter von Set-VMHost konfigurieren jeweils eine Einstellung.

    Wenn man auf die Schnelle sehen möchte, mit welchen Parametern man bestimmte Einstellungen anpassen kann, dann liefert

    (Get-Command Set-VMHost).Parameters | select -ExpandProperty Keys

    diese Information.

    Die meisten Parameter von Set-VMHost entsprechen den Einstellungen des Hyper-V-Hosts in der grafischen Konsole.

    Im grafischen Hyper-V-Manager sind diese Einstellungen auf mehrere Dialoge verteilt. So findet man die meisten von ihnen im Menü Aktion => Hyper-V-Einstellungen. Die Konfiguration von Storage, das via FibreChannel angebunden ist, erfolgt dagegen über den Manager für virtuelle SANs.

    Die Pendants zu FibreChannelWwnn, FibreChannelWwpnMaximum und FibreChannelWwpnMinimum findet man im Manager für virtuelle SANs.

    Hier ein paar Beispiele, die einzelne Einstellungen für Hyper-V ändern (sie ließen sich natürlich in einem Aufruf zusammen­fassen):

    Set-VMHost -ComputerName MyHost -VirtualHardDiskPath c:\clusterStorage\volume2 -Passthru

    Ändern des Standardpfads für VHDs mit PowerShell

    Damit passt man den Standard­pfad für VHDs an. Der Schalter Passthru sorgt dafür, dass man das Ergebnis der Operation angezeigt bekommt. Folgender Befehl aktiviert den erweiterten Sitzungsmodus:

    Set-VMHost -ComputerName MyHost -EnableEnhancedSessionMode $true

    Um die Zahl der gleichzeitig möglichen Live Migrations auf 3 festzulegen und das Authentifizierungs­protokoll auf Kerberos zu ändern, geht man so vor:

    Set-VMHost -ComputerName MyHost `
    -MaximumVirtualMachineMigrations 3 `
    -VirtualMachineMigrationAuthenticationType Kerberos `
    -UseAnyNetworkForMigration $true

    Dieses Kommando aktiviert zudem die Option, beliebige Netzwerke für die Migration von VMs zuzulassen. Wenn man stattdessen ein bestimmtes auswählen möchte, dann setzt man den Wert des letzten Parameters auf $false und legt das gewünschte Netzwerk mit Set-VMMigrationNetwork fest.

    Virtuellen Switch einrichten

    Ein funktionsfähiger Host benötigt einen virtuellen Switch, damit VMs unter­einander oder mit der Außenwelt kommunizieren können. In den meisten Fällen wird man einen externen vSwitch brauchen, so dass sich die VMs mit anderen Hosts oder dem Internet verbinden können.

    Diese Aufgabe erledigt das Cmdlet New-VMSwitch. Es unterstützt zwar den Parameter SwitchType, aber diesen benötigt man nur für Internal und Private. Für einen externen Switch muss man dagegen den Namen eines Netzwerk­adapters angeben, und sobald man dies tut, erzeugt das Cmdlet automatisch einen virtuellen Switch vom Typ External.

    Das Cmdlet New-VMSwitch deckt alle Optionen ab, die der Manager für virtuelle Switches bietet.

    Bevor man diesen Befehl absetzen kann, muss man somit den Namen des Adapters ermitteln, an den man den vSwitch binden möchte. Diese Aufgabe erledigt Get-NetAdapter, das aber den Parameter ComputerName nicht unterstützt. Aus diesem Grund erfolgt der Remote-Aufruf mittels Invoke-Command:

    Invoke-Command -ComputerName MyHost{Get-NetAdapter -Physical}

    Wenn man den Namen des Adapters auf diese Weise erhalten hat, dann kann man nun den virtuellen Switch erzeugen:

    New-VMSwitch -ComputerName MyHost -NetAdapterName Ethernet0 `
    -Name Extern -AllowManagementOS $true

    Anlegen eines virtuellen Switches vom Typ External mit PowerShell

    Der erforderliche Parameter Name legt den Namen des vSwitch fest (in diesem Beispiel "Extern") und die Option AllowManagementOS sorgt dafür, dass das Management-OS in der Parent Partition den Adapter mitbenutzen darf.

    Möchte man einen internen vSwitch anlegen, dann erledigt dies ein Kommando nach diesem Muster:

    New-VMSwitch -ComputerName MyHost -SwitchType Internal -Name Intern

    Windows 10 und Server 2016 erlauben auch die Konfiguration eines virtuellen NAT-Switches. Dieser Beitrag beschreibt, wie man dafür vorgehen muss.

    Keine Kommentare