Как скопировать файл в виртуальную машину Hyper-V.
В своей работе системным администраторам бывает необходимо перенести файлы в гостевую систему виртуальной машины. В этой статье описано как это сделать в системе виртуализации Hyper-V при невозможности скопировать файлы по RDP или по сети(как скопировать файлы в виртуальную машину VMware описано в одноименной статье).
Есть несколько способов это сделать. Не буду подробно описывать первые два, просто скажу, что они есть и работают(иногда, только с их помощью и можно решить поставленную задачу, например если на ВМ установлена не Windows). В любом случае, выбирайте способ, который подходит в вашей ситуации.
Первый способ.
1. Первый способ заключается в создании ISO-образа, подключении его к машине, с которой надо скопировать файл, копировании на него нужных файлов, а потом монтировании к машине, на которую нужно эти файлы переместить.
Второй способ.
2. Второй способ аналогичен первому, только вместо ISO-образа используется файл виртуального жесткого диска(создать его можно на хосте в управлении дисками или в оснастке Hyper-V).
С помощью вышеописанных способов, естественно можно переместить файлы и в обратном направлении, то есть из ВМ на хост Hyper-V.
Перед тем как приступить к описанию двух других способов, нужно сказать, что я не смог использовать их при копировании файлов в гостевую систему, отличную от Windows. Поэтому, если у вас в качестве гостевой ОС используется Linux, то, скорее всего, придется использовать первые два.
Третий способ.
3.Итак, способ номер три:
В Hyper-V на Windows Server 2012 R2 и Windows 8.1 появился новый режим Enhanced Session Mode (ESM), позволяющий, при подключении к виртуальной машине через консоль, пробрасывать внутрь ВМ локальные ресурсы(диски,принтеры, usb-устройства) хоста, на котором открыта консоль Hyper-V. Этот режим позволяет копировать файлы в ВМ, если даже на ней отсутствуют сетевые адаптеры.
Для работы ESM должны быть выполнены следующие условия:
В свойствах сервера Hyper-V должен быть включен Enhanced Session Mode.
В качестве гостевых ОС могут выступать только виртуальные машины с ОС не старше Windows 8.1 (редакции Pro/Enterprise) и Windows Server 2012 R2.
В гостевой ОС должна быть запущена служба Remote Desktop Services.
Пользователь ОС должен на гостевой системе входить в локальную группу администраторов или группу Пользователи удаленного рабочего стола.
Для включения режима ESM откройте параметры Hyper-V и установите необходимую галку:
В свойствах самой виртуальной машины установите галочку на службах интеграции(по умолчанию она не стоит).
Подключитесь к виртуальной машине. При первом подключении появится табличка с настройками параметров подключения.
Если появится необходимость изменить параметры подключения или табличка не появляется, закройте консоль подключения и нажмите «Изменить параметры сеанса» в Диспетчере Hyper-V.
В открывшемся окне параметров сеанса можно изменить разрешение экрана консоли и настроить дополнительные параметры подключения. Для этого нажмите «Показать параметры» в левом нижнем углу.
После этого выберите вкладку локальные ресурсы. Установите галки «Принтеры»(если нужно предоставить доступ ВМ к принтерам) и «Буфер обмена». Нажмите «Дополнительно».
В открывшемся окне отметьте галками какие ресурсы хоста будут доступны виртуальной машине(диски, USB-устройства и т.д).
Сохраните изменения, нажав ОК. Теперь при подключении к ВМ, указанные ресурсы хоста будут доступны и виртуальной машине.
Этот способ аналогичен способу копирования файлов при подключении по RDP, и мне представляется самым простым и удобным в случае с Windows-машинами.
Четвертый способ
4. Ну и четвертый способ предполагает использование Powershell.
При использовании этого метода консоль Powershell должна быть запущена от имени Администратора и, как и в предыдущем способе, в ВМ должны быть установлены Гостевые службы(Integration Services).
Для копирования файла в ВМ нужно выполнить команду:
1 |
Copy-VMFile -Name Windows10 -SourcePath D:\VMFiles\my_file.iso -DestinationPath D:\Files\my_file.iso -CreateFullPath -FileSource Host |
Значение параметров команды:
-Name — имя ВМ;
-SourcePath — путь к файлу;
-DestinationPath — путь к папке назначения;
-CreateFullPath — создать папку назначения, если она отсутствует;
-FileSource — источник нахождения файла(хост Hyper-V).
Если нужно скопировать не один файл, то нужно использовать команды:
1 |
Get-ChildItem C:\MyFiles -Recurse -File | % { Copy-VMFile "Windows10" -SourcePath $_.FullName -DestinationPath $_.FullName -CreateFullPath -FileSource Host } |
Данный способ не самый удобный и работает только в одну сторону, но, возможно, и он будет очень полезен в определенных условиях.
в параметре -DestinationPath нужно указывать не только папку, но имя файла с расширением. я изза этой ошибки убил час времени
Спасибо за комментарий. Поправил.