11. November 2019 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 ganze ohne zusätzlich Software zu installieren?

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?

Was ist ein Hyper-V VM Template?

Arbeiten Sie in einer Umgebung in dem Sie Ihre VMs als Mitglieder im Active Directory 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.

Lass 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 in 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

  • VMName: TEST01 
  • CPU: 2x 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: 1. 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.

CMDLET

Beschreibung

New-VM

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

Set-VM

Mit diesem Befehl, passen Sie die VM Eigenschaften an.

Copy-item

Copy-Item nutzen Sie die VHDx Datei in die neue VM zu kopieren.

Add-VMHardDiskDrive

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

Add-VMHardDiskDrive

Hiermit können Sie die Bootreihenfolge ändern.

Add-VMHardDiskDrive

VM starten

Alles klar, nach wir nun alle Befehle zusammenhaben, erstellen wir ein PowerShell Script 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.

"Bevor Sie ein Skript verwenden oder für sich nutzen möchten, 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.

Ändern Sie im Skript nun die Namen die Sie für Ihre Testumgebung verwenden möchten.

# 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 GreenStart-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.