29. Januar 2020 Aleksej Kusnir

Hyper-V VM Erstellung mit PowerShell

Sie haben eine Hyper-V Umgebung und möchten erfahren, wie Sie VMs aus einem Template bereitstellen können und das ohne zusätzlich Software einzukaufen!

In diesem Blogpost zeige ich Ihnen, wie Sie mithilfe von PowerShell in wenigen Sekunden eine VM aus einem Template erstellen.

More...

Was ist ein Hyper-V VM Template?

Ein VM Template ist eine VM Hülle in der ein Betriebssystem installiert ist.

Arbeiten Sie in einer Umgebung in der Sie Ihre VMs als Mitglieder im Aative Direcoty aufnehmen, dann muss Ihr Template ein Windows Server enthalten, welches vorher gesysprept wurde.

Dabei können Sie zwischen zwei Template Typen unterscheiden, die Sie mit PowerShell nutzen.

  1. 1
    Ein Template aus einer Exportieren VM
  2. 2
    Eine VHDx Datei in der ein Betriebssystem installiert ist.

In diesem Blogpost zeige ich Ihnen, wie Sie eine VM erstellen und dabei eine VHDx Datei als Template nutzen.

Lassen Sie uns nun kurz die Anforderungen anschauen, die erfüllt sein müssen, damit das Ganze funktioniert.

VM mit PowerShell erstellen

Nehmen wir mal an, Sie haben eine VM erstellt und auf dieser einen Windows Server 2019 installiert. Die vhdx Disk dieser VM haben Sie nun als Template kopiert.

Beispiel Template Pfad

Template Pfad: E:\Templates\WS2019\Virtual Hard Disks\WS2019_Template.vhdx

Sie haben einen Hyper-V Server mit dem Namen LI-HY01.

Hyper-V Server: LI-HY01

Sie möchten nun eine VM erstellen mit den folgenden Eigenschaften.

Beispiel VM Eigenschaften

Eigenschaft

Wert

VMName

TEST01

CPU

2 vCPU$

RAM

4 GB RAM Startup, Dynamisch von (2 GB bis 8 GB)

Netzwerk

1x Netzwerkkarte die an einen vSwitch mit dem Namen "VMs" andockt

Festplatte

1x SCSI Anschluss [Hier nutzen wird das Template]

Boot Reihenfolge

1x von Festplatte starten, 2 vom Netzwerk starten

VM Generation

Generation 2

Eigenschaft

Wert

VMName

TEST01

CPU

2 vCPU$

RAM

4 GB RAM Startup, Dynamisch von (2 GB bis 8 GB)

Netzwerk

1x Netzwerkkarte die an einen vSwitch mit dem Namen "VMs" andockt

Festplatte

1x SCSI Anschluss [Hier nutzen wird das Template]

Boot Reihenfolge

1x von Festplatte starten, 2 vom Netzwerk starten

VM Generation

Generation 2

Nun gut, somit haben wir erstmal die Grundlagen geschaffen.

Jetzt benötigen wir noch die PowerShell Befehle, mit denen wir ein VM erstellen können.

PowerShell Befehle

Für das Automatische Erstellen einer VM benötigen wir die folgenden PowerShell Befehle.

Wie Sie sehen, benötigen wir dafür nur wenige Befehle.

CMDLET

Beschreibung

New-VM

Mit diesem Befehl können wir eine neue VM Hülle erstellen.

Set-VM

Mit diesem Befehl passen Sie die VM Eigenschaften an.

Copy-item

Copy-item nutzen Sie um das VHDx Template zu kopieren

Add-VMHardDiskDrive

Nachdem Sie die VHDx Datei kopiert haben, nutzen Sie diesen Befehl um die Festplatte der VM zuzuweisen.

Set-VMFirmware

Hiermit können Sie die Bootreihenfolge ändern.

Start-VM

VM starten

Alles klar, nachdem wir nun alle Befehle zusammen haben, erstellen wir ein PowerShell Skript, welches uns eine VM aus unserem Template erstellt.

Beispiel Skript zu Erstellung einer VM

Anbei ist ein PowerShell Skript, welches die oberen Anforderungen in PowerShell abbildet.

Testen Sie immer Ihre PowerShell Skripte erst in einer Testumgebung, bevor Sie diese produktiv verwenden.

Mit dem Befehl Write-Host im Skript können Sie sich die aktuellen Vorgänge in der PowerShell Konsole anzeigen lassen.

PowerShell Script


# Variablen mit Werte füllen

$VMName="TEST02"

$CPU=2

$RAMmax=8GB

$RAMmin=2GB

$RAMStartup=2GB

$VMTemplate="E:\Templates\WS2019\Virtual Hard Disks\"

$Switchname="VMs"

$VMPath="E:\VMs\"

$TargetVHDXPath=$VMPath+$VMName

$VMVHDXFile=$TargetVHDXPath+ "\Virtual Hard Disks\WS2019_Template.vhdx"

Write-Host "Erstelle VM $VMName" -BackgroundColor Black -ForegroundColor White

New-VM -Name $VMName -MemoryStartupBytes $RAMStartup -SwitchName $Switchname -Path $VMPath -Generation 2

Write-Host "Kopiere VHDx Template..." -BackgroundColor Black -ForegroundColor Green

Copy-item $VMTemplate -Destination $TargetVHDXPath -Recurse

Write-Host "VHDx Disk zur VM hinzufügen..." -BackgroundColor Black -ForegroundColor Green

Add-VMHardDiskDrive -VMName $VMName -ControllerType SCSI -ControllerNumber 0 -Path $VMVHDXFile

Write-Host "Virtual Maschine anpassen..." -BackgroundColor Black -ForegroundColor Green

Set-VM -Name $VMName -DynamicMemory -MemoryMaximumBytes $RAMmax -MemoryMinimumBytes $RAMmin -MemoryStartupBytes $RAMStartup -ProcessorCount $CPU

$bootdevicenetwork=(Get-VMFirmware -VMName $VMName).BootOrder[0]

$bootdevicevhdx=(Get-VMFirmware -VMName $VMName).BootOrder[1]

Set-VMFirmware -VMName $VMName -BootOrder $bootdevicevhdx,$bootdevicenetwork

Write-Host "Virtual Maschine: $VMName... starten" -BackgroundColor Black -ForegroundColor Green

Start-VM -Name $VMName

Fazit

In diesem Blogpost haben Sie gelernt, wie Sie mit Hilfe von PowerShell ein VM in Hyper-V automatisch erstellen können.

Sie kennen nun die PowerShell Befehle die notwendig sind um ein VM aus einem Template zu kreieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.