Konfigurieren Sie Hyper-V VM Powershell

13

Wie kann ich Hyper-V-VMs neu konfigurieren?

Ich möchte in der Lage sein, die VM-Konfigurationsdatei, Prüfpunkte und virtuellen Festplattenspeicherorte mit Powershell zu ändern.

Meine Google-FU weist mich nur auf das Verschieben hin. Ich muss ungefähr 100 VMs ändern. Ich kann die Dateien verschieben. Es macht mir nichts aus, wenn ich eine kleine Ausfallzeit habe. Beim Durchlaufen des Assistenten für jede VM dauert es ungefähr 5 bis 15 Minuten pro Sekunde VM und das sind die kleineren, ich muss in der Lage sein, alle 100 in 2 Stunden zu erledigen.

Wenn ich klären muss, lass es mich wissen.

== Wo ich stecke ==

Ja, ich habe diesen Link gesehen und mir die meisten Befehle angesehen, aber keiner tut, wonach ich suche.

Die Gesamtgröße der Dateien beträgt ca. 14 TB

Die ~ 100 VMs sind zwischen 7 Hosts gruppiert. Der gemeinsam genutzte Speicher ist eine sich drehende EMC-Festplatte und ich möchte sie auf 3Par ssd verschieben.

Jetzt konnte ich die VMs erfolgreich herunterfahren, die Dateien verschieben, alle VMs löschen und sie über Powershell neu erstellen. Als ich meinem CTO sagte, war dies möglicherweise die einzige Möglichkeit für ihn, Kätzchen zu scheißen.

Was ich in der Lage sein möchte, ist, die VMs nicht ZU VERSCHIEBEN, sondern sie neu zu KONFIGURIEREN.

In anderen Werken können sich ändern:

Bildbeschreibung hier eingeben

ZU:

Bildbeschreibung hier eingeben

Ich möchte in der Lage sein, dies mit Powershell zu tun. Außerdem muss ich in der Lage sein, dasselbe für die Prüfpunkte und Konfigurationsdateien sowie für alle anderen Hyper-V-VM-Komponenten zu tun.

Ich kann ungefähr 2 Stunden Ausfallzeit in Kauf nehmen, um den MOVE durch den Assistenten für alle VMs durchzuführen, wird nicht nur meine Maus verschleißen, sondern ungefähr 6 Stunden dauern.

Ich habe dies auch untersucht und seit ein paar Wochen verschiedene Strategien ausprobiert.

==== Ein weiterer Schuss ====

Ich möchte nicht "verschieben". Alles, was ich tun möchte, ist, die Einstellungen innerhalb von Hyper-V zu ändern. Das Verschieben dauert viel zu lange. Es ist für mich viel schneller, die Dateien über das Netzwerk zu kopieren und nur die Pfade zu aktualisieren In Hyper-V kann ich die Computer herunterfahren.

Ich denke, es kann nicht getan werden?

Anthony Fornito
quelle
Welche Art von Forschung haben Sie bisher durchgeführt? Die Dokumentation im hyper-v-Modul scheint mir ziemlich gut zu sein. Wo steckst du fest?
Zoredache
@Zoredache siehe Update.
Anthony Fornito
1
Wenn sie geclustert sind, müssen Sie den Speicher nur mit der Option zum Verschieben des Speichers verschieben. Es befindet sich in der GUI und sollte zu keinen Ausfallzeiten führen. blogs.msdn.microsoft.com/clustering/2012/04/26/…
Drifter104
Im thinking it cannot be done?Ich denke, es kann getan werden, aber es wäre ein langes und kompliziertes Skript. Nahezu alles an einer VM kann vollständig über Powershell manipuliert werden. Ich vermute, dass Sie Ihr Leben erheblich erschweren, indem Sie nicht zulassen, dass die Tools das Verschieben der Dateien für Sie verwalten.
Zoredache
@Zoredache in einer perfekten Welt, in der ich 6 Stunden hatte Ja, es wäre in Ordnung, die Werkzeuge zu verwenden, aber ich habe 2
Anthony Fornito

Antworten:

8

Ich bin mir nicht sicher, ob dies das tut, was Sie brauchen, aber es gibt ein Beispiel für ein PowerShell-Fragment, das ich in der Vergangenheit verwendet habe, um VMs einschließlich des gesamten Speichers auf ein neues Ziel zu migrieren

Get-VM -Name ('ansible-test-acs',
              'ansible-test-web',
              'ansible-test-db') |
ForEach-Object {
    # move everything to d:\hyper-v\vm_name on hv-srv-01
    $MoveOptions = @{
        'Name'                   = $_.Name
        'DestinationHost'        = 'hv-srv-01'
        'IncludeStorage'         = $true
        'DestinationStoragePath' = 'D:\Hyper-V\{0}' -f $_.Name
    }
    $MoveOptions
    Move-VM @MoveOptions -WhatIf
    # Move-VM @MoveOptions
}

Verschieben Sie den VM-Speicher in einen neuen Pfad

('ansible-test-web', 'ansible-test-db') |
ForEach-Object {
    Move-VMStorage $_ `
            –DestinationStoragePath "E:\Hyper-V\$_"
}

Wenn Sie eine VM und alle zugehörigen Dateien an einen neuen Speicherort kopiert haben und möchten, dass Hyper-V den neuen Speicherort verwendet, sollten Sie in der Lage sein, etwas zu tun.

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'
Zoredache
quelle
Vielen Dank für den Code, aber es bewegt sich immer noch die
VMs
Sie haben die Option gesehen, nur den Speicher zu verschieben, oder?
Zoredache
Ja, aber ich möchte den Speicher nicht 'VERSCHIEBEN'. Ich habe die vhdx-Datei an den neuen Speicherort kopiert. Ich kann auch den Befehl Set-VMHardDiskDrive verwenden, mit dem das Verzeichnis des Speichers geändert werden kann, wenn die VM ausgeschaltet ist. Das ist auch in Ordnung, aber ich kann nicht herausfinden, wie ich den Zeiger für die VM-Konfigurationsdatei 'ÄNDERN' kann.
Anthony Fornito
Wenn Sie tatsächlich alle Dateien kopiert haben und sicher sind, entfernen Sie das Entfernen und importieren Sie die VM erneut. Antwort mit einem Beispiel aktualisiert.
Zoredache