VMs in Hyper-V mit PowerShell erstellen und konfigurieren

    Powershell-LogoWenn man regel­mäßig neue virtu­elle Maschinen erzeugt, deren Konfi­guration weit­gehend ähn­lich ist, dann können Temp­lates diese Auf­gabe be­schleu­nigen. Diese bleiben allerdings Tools wie dem Virtual Machine Manager vorbe­halten. Der Hyper-V Manager dagegen führt den Admin für jede neue VM durch einen Wizard. PowerShell bietet hier eine effi­ziente Alter­native auf Basis von Scripts.

    Die weitere Automatisierung von Administration­saufgaben mittels PowerShell war eines der wesentlichen Ziele für Windows 8 und Server 2012. Die neuesten Ausführungen der Betriebssysteme erhalten daher Hunderte neuer Cmdlets, so dass sich jetzt die meisten Systemkomponenten über PowerShell steuern lassen. Mit dabei ist auch ein neues Modul für Hyper-V, das so gut wie alle Aspekte der VM-Verwaltung abdeckt.

    Neue VMs erstellen mit New-VM

    Für das Erzeugen einer neuen virtuellen Maschine ist das Cmdlet New-VM zuständig. Beim Anlegen einer VM kann man bereits ihre Basiskonfiguration bestimmen, darunter die RAM- und Storage-Ausstattung oder die Zuordnung eines Virtual Switch. Die meisten dieser Angaben sind jedoch optional und lassen sich auch nachträglich über separate Cmdlets setzen.

    Ein minimalistischer Aufruf von New-VM könnte so aussehen:

    New-VM MyVM -NoVHD

    Er kreiert eine VM mit dem Namen MyVM, der kein virtuelles Laufwerk zugeordnet wird und die mit den Standardwerten für RAM (512MB) und einem virtuellen Prozessor ausgestattet ist. In dem meisten Fällen dürften diese Vorgabewerte nicht passen, außerdem bedarf eine funktionierende VM einer Netzwerk- und Storage-Konfiguration:

    New-VM MyVM -MemoryStartupBytes 1024MB -SwitchName Extern1 -NewVHDPath MyVHD.vhdx -NewVHDSizeBytes 2GB -Generation 2

    Dieses Beispiel erzeugt eine VM der Generation 2 mit einem vSwitch namens Extern1.

    Wenn man nicht mit -NoVHD explizit auf die Zuordnung eines virtuellen Laufwerks verzichtet, dann sind die Parameter zur Storage-Konfiguration die einzigen erforderlichen. Dabei kann man eine bestehende VHD(X) anhängen oder gleich zusammen mit der VM eine neue anlegen.

    VHD(X) anlegen und mit VM verbinden

    Um eine vorhandene virtuelle Festplatte an die neue VM anzuschließen, muss man diese über den Parameter -VHDPath spezifizieren. Gibt man hier nur den Dateinamen ohne Pfad an, dann sucht New-VM im Standardverzeichnis für virtuelle Festplatten nach der VHD(X).

    Wenn man gleich mit der VM eine VHD(X) erzeugen möchte, dann sind dafür zwei Parameter notwendig:

    • -NewVHDPath: Der Name der VHD(X), mit oder ohne Pfad. Fehlt dieser, dann wird das virtuelle Laufwerk im Standardverzeichnis gespeichert. Die Dateierweiterung entscheidet darüber, ob eine VHD oder eine VHDX erzeugt wird.
    • -NewVHDSizeByte: Die maximale Größe des virtuellen Laufwerks, wobei die Notation in der Form 2MB oder 5GB erfolgt.

    Die von New-VM erstellten VHD(X)-Dateien sind immer vom Typ dynamisch. Möchte man eine fixed VHD(X), dann muss man sie erst mit Hilfe von New-VHD anlegen und danach über den Parameter -VHDPath mit der VM verbinden.

    Virtual Switch zuordnen

    Die Anpassung von Netzwerkeinstellungen mit New-VM beschränkt sich auf die Zuordnung eines Virtual Switch zur VM. Die Einrichtung oder Konfiguration eines vSwitch ist nicht seine Aufgabe. Wenn man nicht auswendig weiß, welche vSwitches auf einem Host konfiguriert wurden, dann kann man mit Get-VMSwitch eine entsprechende Liste ausgeben.

    ISO-Image als Bootlaufwerk festlegen

    Wenn man eine neue VM anlegt, dann möchte man meistens im nächsten Schritt ein Gastbetriebssystem installieren. Zu diesem Zweck soll die VM vom Installationsmedium starten, also typischerweise von einer DVD oder noch häufiger von einem ISO-Abbild.

    New-VM bietet aber nur die Möglichkeit, mit dem Parameter -BootDevice die Art des Geräts auszuwählen, also zum Beispiel "cd". Wenn man jedoch zusätzlich das virtuelle DVD-Laufwerk mit einer ISO-Datei verknüpfen möchte, dann kann man dies nach dem Anlegen der VM mit dem Cmdlet Add-VMDvdDrive tun. Ein entsprechender Aufruf würde etwa so aussehen:

    Add-VMDvdDrive -VMName MyVM –Path D:\ISOs\install.iso

    Dynamic Memory konfigurieren

    Die Menge des Arbeitsspeichers, der einer VM zugeteilt wird, lässt sich bei New-VM mit dem Parameter -MemoryStartupBytes spezifizieren. Es handelt sich dabei um einen statischen Wert.

    Dagegen erlaubt die Konfiguration von Dynamic Memory dem Hypervisor, der VM je nach Auslastung der Maschine RAM zu entziehen oder zuzuteilen. Die dynamische Speicherverwaltung kann man nach dem Erzeugen der VM mit dem Cmdlet Set-VMMemory aktivieren, zuständig ist dafür der Parameter -DynamicMemoryEnabled $true.

    vCPUs und VHDs nachträglich zuordnen

    Sollen einer mit New-VM erzeugten virtuellen Maschine später zusätzliche CPUs zugeteilt werden, dann kann man das mit Set-VMProcessor tun. Da Hyper-V ein Hot-add von Prozessoren erst ab Windows Server 2016 unterstützt, muss die VM bei älteren Versionen zu diesem Zweck heruntergefahren werden. Das Hinzufügen weiterer VHDs erfolgt über das Cmdlet Add-VMHardDiskDrive.

    Systemvoraussetzungen

    Die beschriebenen Cmdlets zum Anlegen und Konfigurieren von VMs stehen unter Windows 8 und Server 2012 zur Verfügung. Sie lassen sich auch unter Verwendung des Parameters -ComputerName auf Remote-Hosts anwenden.

    Voraussetzung für die Konfiguration von VMs mittels PowerShell ist jedoch, dass das betreffende PowerShell-Modul bei der Aktivierung des Hyper-V-Features ebenfalls ausgewählt wurde. Zur Ausführung von New-VM ist eine Instanz von PowerShell mit administrativen Rechten erforderlich.

    Keine Kommentare