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.
- 1Ein Template aus einer Exportieren VM
- 2Eine 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.
PowerShell VideoKurS
Gratis
Möchten Sie 10 kostenlose Lektionen per E-Mail für die wichtigsten PowerShell Grundlagen erhalten?
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.