Верните виртуальные машины hyper-v после переустановки хост-ОС

У меня есть автономный сервер Win 2012 R2 с Hyper-V на нем. Это мой тестовый сервер, который я использую для экспериментов, поэтому его можно отключить в любое время. Это не проблема.

Можно ли импортировать виртуальные машины 2012 r2 в Hyper-V 2016 без их экспорта? Что-то вроде загрузки файлов vbox в virtualbox без необходимости экспорта машин? У меня мало места на диске, и я хотел бы выполнить чистую установку хоста OS, а затем каким-то образом вернуть мои текущие виртуальные машины на новый Hyper-V, но без их экспорта и импорта. Таким образом, они по-прежнему будут в том же месте, где они находятся сейчас, но просто зарегистрируют их в hyper-v без особых операций ввода-вывода, чтобы экспортировать и импортировать их обратно.

Я не хочу делать обновление на месте хоста OS, но чистой установки 2016 года, а затем загрузить мой VMS.

Является ли это возможным? Если да, то как?

1 ответ

Решение

Если у вас есть файлы, как vhd(x), так и файл vmx компьютера, и ваша система настроена одинаково с похожими именами vSwitch, тогда вы сможете использовать команду Import-VM -Register path\to\the\file.vmx,

Если у вас больше нет файлов VMX, вам нужно просто заново создать новую виртуальную машину и, когда вас спросят о добавлении хранилища, использовать существующие файлы vhd(x), которые у вас уже есть.

Основываясь на инструкции по использованию Import-VM, следующий сценарий PowerShell импортирует все виртуальные машины в папке на месте, будь то старые файлы XML или новые файлы vmcx. Безопасно для запуска в папке, в которой некоторые из них уже зарегистрированы, поскольку Import-VM просто покажет ошибку и пойдет дальше.

Просто установите BaseFolder соответствующим образом и выполните.

$baseFolder='Q:\Hyper-V\Virtual Machines\'
$vms=Get-ChildItem $baseFolder -Recurse | where {$_.extension -in ".xml",".vmcx"}
$vms |  ForEach {
    Write-Output "Importing $_"
    Import-VM -Path $_.FullName -Register
}

Read-Host -Prompt "Press Enter to continue"