Netz-Weise Logo

Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.

Fehlende virtuelle Switche für Hyper-V VMs ermitteln und automatisch anlegen

Wenn eine virtuelle Maschine in Hyper-V von einem Host auf einen anderen per Import übertragen werden soll, müssen alle virtuellen Switche, an die die Maschine auf dem Quellhost angeschlossen war, auf dem Zielhost existierten. Existieren bedeutet in diesem Fall, dass ein Switch mit identischem Namen vorhanden sein muß. Ist das nicht der Fall, quittiert Hyper-V den Import mit einer Fehlermeldung:

Es ist ein Fehler beim Import aufgetreten
Der virtuelle Computer kann aufgrund von Konfigurationsfehlern nicht importiert werden. Verwenden Sie "Compare-VM", um den virtuellen Computer zu reparieren

Compare-VM ist ein Powershell-Kommando, dass zusammen mit dem Hyper-V Modul ausgeliefert wird, und das vor dem Import angewendet werden kann, um zu prüfen, ob es Probleme bei der Konfiguration gibt. Dafür pipen Sie das vmcx-File der virtuellen Maschine einfach in Compare-VM. Man erhält dann ein Rückgabeobjekt mit den Konfigurationsdetails der VM:

PS > Dir M:\Hyper-V\LON-AP1\Virtual Machines\4C9790D7-48CD-4D31-8BA2-02D8C9C245AE.vmcx | compare-VM

CheckpointPath     : M:\Hyper-V\LON-AP1\Snapshots
VM                 : VirtualMachine (Name = 'LON-AP1') [Id = '4c9790d7-48cd-4d31-8ba2-02d8c9c245ae']
OperationType      : ImportVirtualMachine
Destination        : R1WS3
Path               : M:\Hyper-V\LON-AP1\Virtual Machines\4C9790D7-48CD-4D31-8BA2-02D8C9C245AE.vmcx
SnapshotPath       : M:\Hyper-V\LON-AP1\Snapshots
VhdDestinationPath : M:\Hyper-V\LON-AP1\Virtual Hard Disks
VhdSourcePath      :
Incompatibilities  : {33012}

Weiterlesen
Markiert in:
  4319 Aufrufe

virtuelle Hyper-V Maschinen mit dem NAT-Switch verwenden - byebye Router-VM!

Dank Docker gibt es in der aktuellen Preview von Windows 10 und in der Rosetta-Jubiläums-Ausgabe, die Ende Juli erscheint, endlich die Möglichkeit, virtuelle Maschinen in einem isolierten, privaten Netzwerk per NAT mit dem physikalischen Netzwerk zu verbinden, ohne eine Router-VM installieren zu müssen. Der NAT-Switch wurde notwendig, um per Docker bereitgestellte Anwendungen mit den Netzwerk zu verbinden. Und so richtet man einen NAT-Switch ein: 

Legen Sie zuerste mit Hyper-V einen neuen internen VM-Switch an. In früheren Versionen von Windows 10 gab es einen speziellen NAT-Switch, aber der ist zugunsten des internen Switches wieder gewichen:

$NatSwitch = New-VMSwitch -SwitchName Nat -SwitchType Internal

Als nächstes benötigen wir eine Gateway-Adresse für das interne Netzwerk, die wir an den Switch binden. Ein interner Switch legt automatisch auch eine interne virtuelle Netzwerkkarte an. An diese wird die Gateway-IP gebunden. Das folgende Script fragt zunächst den zum Switch gehörenden Netwerkadapter ab. Das passiert in zwei Schritten: Erst wird die virtuelle Repräsentation mit Get-VMNetworkadapter abgefragt, und dann wird die dazugehörige physikalische Netzwerkkarte abgefragt. Es handelt sich dabei um dasselbe Gerät, aber mit zwei unterschiedlichen Cmdlets abgefragt. Diesen umständlichen Weg gehen wir, weil get-Vmnetworkadapter uns den Interface-Index nicht zurück liefert, den wir benötigen, um das NAT-Netzwerk einzurichten: 

$natNetworkAdapter = Get-VMNetworkAdapter -ManagementOS -SwitchName $NatSwitch.Name
$networkAdapter = Get-NetAdapter | Where-Object -FilterScript {
     $_.deviceid -eq $natNetworkAdapter.DeviceId
}

Weiterlesen
  5763 Aufrufe

Hyper-V VM per Powershell anlegen und konfigurieren

Das Anlegen einer virtuellen Maschine in Hyper-V geht sehr einfach. Hier zeige ich ein kleines Beispiel, dass eine Generation-2 VM anlegt, konfiguriert und ein ISO-Image zum Starten bereitstellt. 

Zuerst erzeuge ich ein Credential-Objekt, um das ISO-File für die VM aus einer Freigabe zu kopieren. Die Methode PSCredential der Klasse PSAutomation erzeugt uns dafür ein Credential-Objekt, das 2 Parameter benötigt: Den Benutzernamen und das Kennwort.

  • $password = ConvertTo-SecureString -String "Passwort" -AsPlainText -Force
  • $UserName = "Administrator"
  • $adminCred = New-Object System.Management.Automation.PSCredential ($username, $password)

 

Als nächstes wird ein Ordner für das Iso angelegt:

$isoPath = mkdir D:\iso -Force

Weiterlesen
Markiert in:
  5145 Aufrufe

Windows 2008 R2-VM in Windows Server 2012R2 importieren

In Windows Server 2008 R2 exportierte virtuelle Maschinen lassen sich in Windows Server 2012 R2 nicht mehr importieren... Aber mit einem größeren Trick schon Wenn Sie virtuelle Maschinen von Windows 2008 R2 in Windows Server 2012 R2 exportieren wollen, lassen Sie es am Besten bleiben. Windows Server 2012 R2 kann das nämlich schlicht und ergreifend nicht. Schuld daran ist eine Änderung der WMI-Klassen. Am einfachsten ist es, die VMs einfach direkt ohne Export zu kopieren, denn Windows Server 2012 R2 kann virtuelle Maschinen ohne Probleme importieren, wenn sie nicht vorher exportiert worden sind.  Ist der Geist aber erst mal aus der Flasche, haben Sie also schon einen Satz Maschinen exportiert und keinen Zugriff mehr auf den alten Server - wenn Sie z.B. virtuelle Maschinen aus fremder Quelle bekommen - hilft ein Windows Server 2012 mit Hyper-V aus. Der ist noch in der Lage, das alte Format korrekt zu importieren. Von hier aus können Sie die virtuellen Maschinen dann wieder exportieren oder einfach direkt kopieren. Dumm nur, wenn Sie gar keinen Windows Server 2012 mehr haben.  Der geniale Trick, den ich gefunden habe, um die Maschinen so schnell und mit so wenig Aufwand wie möglich zu transferieren, geht über einen virtuellen Windows Server 2012. Hmmm, werden Sie jetzt sagen, aber der Import einer virtuellen Maschine geht doch nur auf einem Hyper-V Server, und der ist in einer virtuellen Maschine nicht lauffähig... Korrekt, aber mit einem kleinen Trick kann man Hyper-V auf einer virtuellen Maschine installieren, und zum Importieren muß die virtuelle Maschine nicht gestartet werden. Und das geht so:  Installieren Sie einen virtuellen Windows Server 2012, am Besten mit - - convert-windowsimage>convert-windowsimage.ps1 aus der Technet-Gallery. Dafür benötigen Sie nur ein Windows Server 2012-Iso-File. Das dauert ca. 5 Minuten. In der Zwischenzeit können Sie schon einmal eine virtuelle Maschine in Hyper-V anlegen und als Datenträger die neu erstelle Festplatte angeben. Anschließend starten Sie die VM und installieren Hyper-V mit Hilfe von DISM.exe. Es ist wichtig, dass Sie DISM verwenden, da Powershell die Installation verweigert. 

dism /online /enable-feature /FeatureName:Microsoft-Hyper-V

Nun können Sie die Hyper-V Verwaltungswerkzeug nachinstallieren, z.B. mit der Powershell:

Add-WindowsFeature -Name RSAT-Hyper-V-Tools -IncludeAllSubFeature

Im letzten Schritt können Sie jetzt alle exportieren virtuellen Maschinen importieren. Liegen Ihre VMs z.B. auf E:\Hyper-V, verwenden Sie folgende Powershell-Befehl:

  $vm = ( dir E:\Hyper-V\*.exp -Recurse ).FullName
  $vm | % { Import-VM -Path $_ -Copy }

Nun importiert Hyper-V Ihre virtuellen Maschinen. Nach dem Import liegt die Konfiguration der Maschine in einer normalen XML-Datei vor, die Windows Server 2012 R2 importieren kann. Am einfachsten kopieren Sie Ihre virtuellen Maschinen vor dem Import in eine VHD-Datei und hängen diese direkt an die virtuelle Maschine, dann ist der Kopiervorgang am Einfachsten. Damit bekommen Sie den ganzen Vorgang in einer halben Stunde über die Bühne. 

Markiert in:
  2933 Aufrufe