Для передачи файлов через буфер обмена в Hyper V виртуальную машину есть несколько способов. Каждый из них отличается от версии операционной системы и условий в которых вы его хотите использовать, но любой из них позволяет копировать файлы в виртуальную машину с хоста и обратно.
Первый вариант работает с версий ВМ Windows Server 2012 R2 и Windows 8.1 и называется Enhanced Session Mode (ESM). Эта возможность работает по тому же принципу, что и RDP, то есть мы можем использовать не только буфер обмена, но и USB устройства, принтеры и так далее. Отличия от RDP в том, что мы не используем сеть в данном случае, но если у вас настроены политики ограничивающие RDP подключения они могут быть причиной ошибок.
По умолчанию Enhanced Session Mode включен. Мы можем проверить ее если зайдем в настройки Hyper V:
Или выполнить аналогичное через Powershell:
# Проверка
Get-VMHost | SELECT -Property EnableEnhancedSessionMode
# Включение
Set-VMHost -EnableEnhancedSessionMode $True -Passthru
Настройка расширенного сеанса Hyper V (ESM) устанавливается только на уровне сервера, но что бы у нас работала возможность копирования нужно включить и пакет интеграции Hyper V, который по умолчанию отключен. Эта служба интеграции называется Guest services (Гостевая служба), и она включается у каждой виртуально машины отдельно. Для ее включения зайдем в настройки виртуально машины:
И включить гостевую службу:
Аналогичную настройку через Powershell можно сделать так:
# Просмотр включенных пакетов интеграций у ВМ с именем Win10
Get-VMIntegrationService -VMName 'Win10'
# Включение гостевого пакета интеграции
Enable-VMIntegrationService -VMName "Win10" -Name "Guest Service Interface"
# Включение на всех виртуальных машинах
Get-VM | Enable-VMIntegrationService -Name "Guest Service Interface"
Последнее что нужно сделать - это включить службу "Remote Desktop Services":
Можно установить и в консоли PS:
# Получение статуса сервиса
Get-Service "Remote Desktop Services"
# Установка сервиса на автоматический запуск
Set-Service "Remote Desktop Services" -StartupType Automatic
Теперь включим виртуальную машину и подключимся к ней:
О том что у нас включен режим расширенного сеанса можно увидеть по следующему окну. Если мы хотим проверить, что возможность использования буфера у нас включена нужно зайти в дополнительные настройки:
На второй закладке стоит галочка под Clipboard (Буфер обмена) - это то что нам нужно:
После этого у нас будет работать в Hyper V буфер обмена путем копирования/вставки, а перетаскивание файлов в виртуальную машину работать не будет, так как такого функционала нет.
Мы так же можем использовать Powershell:
# Откуда скопировать
$s_path = 'C:\file.txt'
# Куда скопировать
$d_path = 'C:\'
Copy-VMFile -Name 'Win10' -SourcePath $s_path -DestinationPath $d_path -FileSource Host
Microsoft описывает проблему, при которой копирование так же не будет работать и оно связано с политиками. По следующему пути нужно изменить политику с "Do not allow drive redirection" на "Disabled" или "Not Configured":
Computer Configuration\Policies\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Device and Resource Redirection
Такого пути в групповых политиках я у себя не нашел.
Передача файлов в Hyper V через публичную папку
Второй вариант это создать в Hyper V виртуальную сеть через внутренний коммутатор. Внутренний или Internal коммутатор не использует физический сетевой адаптер и разрешает пользоваться таким типом соединения хосту Hyper V и виртуальным машинам. Таким образом затрачиваемые ресурсы, при копировании в Hyper V большого объема данных, не будут сильно отличаться от первого способа.
Для создания внутреннего коммутатора нужно зайти в окно управления свичами:
В новом окне выбрать "Internal" или "Частный":
Ввести имя коммутатора и подтвердить создание:
Это делается в Powershell одной командой:
New-VMSwitch -Name 'Private' -SwitchType Private -ComputerName 'AD1'
После этого для каждой виртуальной машины, с которой мы хотим обмениваться данными, нужно подключить адаптер к этому коммутатору. Для этого зайдем в настройки виртуальной машины:
Теперь создадим виртуальный сетевой адаптер:
Теперь подключим адаптер к коммутатору:
В случае с Powershell это так же одна команда:
Add-VMNetworkAdapter -SwitchName 'Private' -VMName 'Win10'
В виртуальных машинах отобразится новое подключение и возможно потребуется настроить IP адрес, так как скорее всего у нас не будет доступ к DHCP серверу. Далее можно подключаться к машинам по сетевому пути.
Копирование файлов в Hyper V через виртуальный диск
Этот способ заключается в подключении виртуального диска отключенной ВМ. Мы можем создать новый диск или использовать системный диск операционной системы. Я крайне не рекомендую использовать этот способ, так как в случае существования чекпоинтов/снэпшотов на этой ВМ или если вы забудете размонтировать диск, это может привести к необратимым последствиям.
Вы можете создать диск воспользовавшись статьей "Создание виртуальных дисков в Hyper V". Папку, где лежит виртуальный диск можно увидеть через настройки виртуальной машины:
Если путь заканчивается на avhdx, то вы используете контрольную точку. Для монтирования диска нужно перейти по пути и выбрать Mount у vhd/vhdx файла:
В моем случае появилось два раздела, так как это системный диск. Для размонтирования дисков нужно кликнуть по разделу и нажать Eject.
Если хотите выполнить команду через Powershell, то это можно сделать так:
$disk = Get-VMHardDiskDrive -VMName 'Win10'
# Монтирование
Mount-VHD -Path $disk.Path
# Размонтирование
Dismount-VHD $disk.Path
Командлет выше подразумевает, что у вас подключен один диск. В случае нескольких дисков запустите:
$disk | select *
Копирование в Hyper V используя буфер обмена с RDP
Последний способ подключения работает через "Подключению к удаленному рабочему столу" или RDP. Для такой возможности копирования, кроме открытых портов и включенной возможности в свойствах компьютера дополнительных требований нет. Так же стоит проверить галочку в свойствах подключения RDP:
Вы так же можете почитать как настроить RDP в Powershell.
...
Подписывайтесь на наш Telegram канал
Теги: #powershell #hyper-v