Задача:
Имеется виртуальная машина Hyper-V и гостевая операционная система, для которой Integration Components не включены в состав Hyper-V и предоставляются не в виде iso образа, который можно смонтировать и установить компоненты, а в виде cab-файла.
Как интегрировать Integration Components из cab-файла в виртуальную машину Hyper-V.
Решение:
Скачиваем cab-файл с нужной версией Integration Components. Ссылки приведены в статье Hyper-V integration components update for Windows virtual machines
Можно интегрировать компоненты непосредственно в гостевой ОС. Для этого нужно от имени Администратора выполнить команду, указав путь до скачанного cab-файла:
Код: Выделить всё
Dism.exe /online /Add-Package /PackagePath:"c:\Distr\IntegrationComponents\windows6.x-hypervintegrationservices-x64.cab"
А можно интегрировать их на хосте Hyper-V. Для этого нужно завершить работу гостевой операционной системы на хосте Hyper-V и выполнить PowerShell команды от имени Администратора:
Указываем путь до скачанного cab-файла с Integration Components:
Код: Выделить всё
$integrationServicesCabPath="D:\Hyper-V\IntegrationServices\windows6.x-hypervintegrationservices-x64.cab"
Указываем виртуальный диск, на котором установлена операционная система, в которую нужно интегрировать компоненты:
Код: Выделить всё
$virtualHardDiskToUpdate="D:\Hyper-V\Virtual Hard Disks\WinServer2008R2_1.vhdx"
Монтируем в систему диски гостевой ОС:
Код: Выделить всё
$diskNo=(Mount-VHD -Path $virtualHardDiskToUpdate –Passthru).DiskNumber
Выбираем диск, на котором установлена гостевая операционная система:
Код: Выделить всё
$driveLetter = "F"
или
Код: Выделить всё
$driveLetter=(Get-Disk $diskNo | Get-Partition).DriveLetter
Проверяем статус диска, и если он отключен (offline), подключаем его (online):
Код: Выделить всё
if ((Get-Disk $diskNo).OperationalStatus -ne 'Online') {Set-Disk $MountedVHD.Number -IsOffline:$false -IsReadOnly:$false}
Интегрируем дистрибутив из cab-файла в гостевую ОС:
Код: Выделить всё
Add-WindowsPackage -PackagePath $integrationServicesCabPath -Path ($driveLetter+":")
При удачном выполнении система ответит:
Код: Выделить всё
Path : F:
Online : False
RestartNeeded : False
Размонтируем диски:
Код: Выделить всё
Dismount-VHD -Path $virtualHardDiskToUpdate
По материалам статей How to install integration services when the virtual machine is not running и Integration components available for virtual machines not connected to Windows Update