В обновленной роли Hyper-V, представленной в Windows Server 2012 R2 и Windows 8.1 появилась возможность прямого копирования файлов с хоста Hyper-V в виртуальную машину без использования сетевых интерфейсов. Этот функционал реализуется с помощью новой службы в гостевой ОС под названием Guest Services, входящей в состав интеграционных компонентов Hyper-V (Integration Services).
Итак, чтобы воспользоваться возможностью прямого копирования файлов в виртуальную машину с хостовой ОС Hyper-V, нужно в ВМ установить последнюю версию компонентов интеграции (Integration Services версии не ниже 6.3.9600.16384), и активировать на ней службу Guest Services.
Служба Guest Services позволяет осуществить копирование файлов между хостовым гипервизором (компьютером с ролью Hyper-V) и виртуальной машиной, запущенной на нем без использования сетевых компонентов. Процесс копирования осуществляется через высокоскоростную внутреннюю шину vmbus (Virtual Machine Bus), напрямую связывающую гипервизор и виртуальную машину. Благодаря этому администратор может скопировать внутрь виртуальной машины любой файл, причем абсодютно неважно в какой сети находится целевая виртуальная машина, подключена ли она вообще к виртуальному коммутатору, или находится в изолированной сети.
Служба Guest services для виртуальных машин по умолчанию отключена. Включить ее можно через GUI консоли Hyper-V в свойствах виртуальной машины (в разделе Integration Services ) или с помощью Powershell.
Проверить, включена ли служба Guest services для виртуальной машины, можно так:
Get-VMIntegrationService -VMName HV2012R2 -Name "Guest Service Interface”
В данном примере служба отключена: Guest Service Interface: False.
Чтобы включить службу, воспользуемся такой командой:
Enable-VMIntegrationService -VMName "HV2012R2" -Name "Guest Service Interface" -ErrorAction Continue
Внутри виртуальной машины должна быть запущена служба Hyper-V Guest Service, ее статус можно получить так:
Get-Service vmicguestinterface
После того, как служа интеграции Guest Service включена, можно с помощью специального командлета Copy-VMFile скопировать любой файл, расположенный на файловой системе сервера Hyper-V напрямую в виртуальную машину. Чтобы скопировать файл в уже существующую папку в гостевой ОС, выполним на сервере команду:
Copy-VMFile "HV2012R2" -SourcePath C:\Install\2012R2.iso -DestinationPath C:\Install\2012R2.iso -FileSource Host
Если целевой путь в гостевой ОС не существует, команда вернет ошибку. Чтобы автоматически создать указанный путь на файловой системе гостевой ОС, воспользуемся аргументом -CreateFullPath
Copy-VMFile "HV2012R2" -SourcePath C:\Install\2012R2.iso -DestinationPath C:\Install\2012R2.iso -FileSource Host –CreateFullPath
Get-ChildItem C:\Scripts -Recurse -File | % { Copy-VMFile "HV2012R2" -SourcePath $_.FullName -DestinationPath $_.FullName -CreateFullPath -FileSource Host }
Отключить службу Guest Services можно так:
Get-VMIntegrationService -VMName "HV2012R2" -Name "Guest Service Interface" | Disable-VMIntegrationService -Passthru
Итак, благодаря службе Guest Services администратор Hyper-V может напрямую скопировать любой файл внутрь гостевой ОС виртуальной машины.