Как напрямую скопировать файл с хоста Hyper-V в виртуальную машину

В обновленной роли 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), напрямую связывающую гипервизор и виртуальную машину. Благодаря этому администратор может скопировать внутрь виртуальной машины любой файл, причем абсодютно неважно в какой сети находится целевая виртуальная машина, подключена ли она вообще к виртуальному коммутатору, или находится в изолированной сети.

Примечание . В предыдущих версиях Hyper-V, чтобы скопировать файл внутрь виртуальной машины с сервера Hyper-V приходилось настраивать rdp подключение, общие папки через дополнительную внутреннюю сеть или общие vhd файлы. Также не стоит путать копирование файлов через службу Guest Services с возможностью копирования файлов через режим-расширение rdp-протокола — Enchanted Session Mode .

Служба Guest services для виртуальных машин по умолчанию отключена. Включить ее можно через GUI консоли Hyper-V в свойствах виртуальной машины (в разделе Integration Services ) или с помощью Powershell. Служба интеграции guest services в hyper-v windows server 2012 r2

Проверить, включена ли служба Guest services для виртуальной машины, можно так:

Get-VMIntegrationService -VMName HV2012R2 -Name "Guest Service Interface”

Get-VMIntegrationService Powershell

В данном примере служба отключена: Guest Service Interface: False.

Чтобы включить службу, воспользуемся такой командой:

Enable-VMIntegrationService -VMName "HV2012R2" -Name "Guest Service Interface" -ErrorAction Continue

Внутри виртуальной машины должна быть запущена служба Hyper-V Guest Service, ее статус можно получить так:

Get-Service vmicguestinterface

Служба интеграции vmicguestinterface

После того, как служа интеграции Guest Service включена, можно с помощью специального командлета Copy-VMFile скопировать любой файл, расположенный на файловой системе сервера Hyper-V напрямую в виртуальную машину. Чтобы скопировать файл в уже существующую папку в гостевой ОС, выполним на сервере команду:

Copy-VMFile "HV2012R2" -SourcePath C:Install2012R2.iso -DestinationPath C:Install2012R2.iso -FileSource Host

Если целевой путь в гостевой ОС не существует, команда вернет ошибку. Чтобы автоматически создать указанный путь на файловой системе гостевой ОС, воспользуемся аргументом -CreateFullPath

Copy-VMFile "HV2012R2" -SourcePath C:Install2012R2.iso -DestinationPath C:Install2012R2.iso -FileSource Host –CreateFullPath

Copy-VMFile - копируем файл внутрь виртуальной машины Hyper-V с помощью Powershell

Примечание . Командлет Copy-VMFile позволяет за раз скопировать только один файл. Чтобы скопировать содержимое папки целиком, можно воспользоваться такой конструкцией:

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 может напрямую скопировать любой файл внутрь гостевой ОС виртуальной машины.

EnglishRussianUkrainian