Hyper v как перекинуть файлы на виртуальную машину

Обновлено: 05.07.2024

При запуске Hyper-V и виртуальной машины (также с современной ОС Windows), действительно ли невозможно копировать / вставлять файлы между хостом и виртуальными машинами? Кажется, даже не текст, хотя есть странная опция «type clipboard text», которая, кажется, работает только время от времени.

Я должен что-то упустить.

Я запускаю Windows 8.1 в качестве хоста и Windows 7 в виртуальной машине, если это имеет значение.

Я бы просто использовал RDP и копировал файлы таким образом. Тренер Microsoft сказал мне, что Server 2012 R2 поддерживает копирование-вставку, поэтому я ожидаю, что Windows 8.1 также сделает это. У вас установлено обновление 1 на хосте (не уверен, требуется ли оно, просто спрашиваю)? Что еще более важно, вы установили последние компоненты интеграции в ВМ? Я просто использую стандартные ресурсы Windows. Я не пользуюсь AD, но все мои учетные записи имеют пароли, поэтому мне не нужно делать никаких хаков групповой политики. Это просто работает. При подключении к ВМ появляется всплывающее окно с настройкой дисплея. Если вы нажмете Показать параметры> Локальные ресурсы> Еще . вы можете выбрать диск на хост-компьютере, который будет виден на виртуальной машине.

Лучшими вариантами являются обычная старая сетевая копия и удаленный рабочий стол, который вместо этого допускает полную передачу в буфер обмена.

RDP может стать довольно нестабильным, если вы попытаетесь скопировать большие файлы поверх него, поэтому, если требуется передача больших файлов, я бы порекомендовал сеть; если вам просто нужно скопировать / вставить текст, RDP отлично работает.

Конечно, чтобы оба варианта работали, вам нужно, чтобы гостевая система была подключена к вашей сети и имела правильные настройки TCP / IP.

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат . @ToolmakerSteve Правильное место для этих ссылок в вашем собственном ответе, а не в качестве комментария к другому ответу. И, пожалуйста, уважайте «Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат».

Вот быстрый и простой способ получить эту работу эффективно:

  • Если вы используете виртуальную машину, сначала отключите ее.
  • найдите файл образа вашего виртуального жесткого диска .vhd вашей виртуальной машины
  • Щелкните правой кнопкой мыши по этому файлу и выберите mount
  • Это даст "System Reserved" и "Local Disk" диски.
  • Откройте диск «Локальный диск» (это диск ОС на ВМ)
  • Пойди туда и вставь свои файлы.
  • Наконец размонтировать или извлечь один из драйверов
  • Запустите виртуальную машину и перейдите на диск c: \, и вы найдете свои файлы.

Надеюсь, это поможет кому-то :)

Чтобы быть справедливым, это дает вам способ для копирования файлов на виртуальную машину с хоста. Это может быть не через буфер обмена, но иногда со старыми гостевыми ОС могут потребоваться сложные маршруты, подобные этому. Это смешно. Я не могу выключать гостевую виртуальную машину время от времени. @BlessedGeek Вы можете сделать это, не выключая виртуальную машину, если вместо этого вы используете отдельный виртуальный жесткий диск из системного диска виртуальной машины и подключаете его к гостевому контроллеру SCSI, что позволяет монтировать его во время работы гостевой системы. Вы все еще не можете установить его на хосте и госте одновременно. Я мог также переместить мою машину по улице, полностью разобрав ее, переместив ее по частям и собрав в другом месте. Но о эффективность .

Согласно этому ответу StackOverflow это делает независимо от того , что гость ОС:

ESM работает только с виртуальными машинами Windows 8.1 и Windows Server 2012 R2. Поскольку вы используете виртуальную машину Win7, ESM не будет доступен.

Хотя принятый здесь ответ говорит, что нет способа скопировать и вставить что-либо, я могу сделать это между моим хостом Windows 8.1 и Windows 10 Tech Preview, запущенным в Hyper-V с ESM. Мне еще предстоит найти документацию по Windows 8.1, в которой это объясняется, но для Server 2012R2 см. Эту статью TechNet .

Изменить: я нашел это очень практическое руководство по ESM, в котором разъясняется, что вам также нужны версии Pro или Enterprise.

Подтверждено, что это было (наконец) введено в Windows 8.1. Он был недоступен, когда я опубликовал свой ответ, и он был принят. Подтверждено. Убедитесь, что вы используете «Расширенный сеанс», а не «Базовый сеанс».

Это можно сделать через Powershell.

Сначала создайте сессию с New-PSSession HOST:

Затем из HOST скопируйте файл с Copy-Item помощью сеанса:

Вы можете «записать» ваши файлы в файл ISO на хосте и смонтировать ISO на гостевой.

Windows не может создавать ISO-образы изначально, но вы можете использовать что-то вроде * InfraRecorder (лицензию GNU GPL) для создания ISO.

Если вы в конечном итоге используете InfraRecorder, действие создания ISO будет скрыто в верхнем меню:

Действия> Записать компиляцию> на образ диска .

* Я не имею отношения к InfraRecorder, мне просто нужно было скопировать некоторые файлы гостю.

У меня есть странная проблема с копированием вставки в Hyper-V, где я могу скопировать вставку после запуска виртуальной машины, но если я выйду из ОС виртуальной машины и снова войду в нее как другой пользователь, вставка копии не будет работать. Я обнаружил, что тик расширенного сеанса в окне «Подключение к виртуальной машине» снимался либо вскоре после входа в систему, либо во время переключения между пользователями в ВМ. Я снова включил отметку Enhanced Session, и после этого функция копирования и вставки в Hyper-V снова работает.

Да, просто закройте и снова откройте виртуальную машину, сработавшую для меня. Не знаю, почему все эти посты о монтировании дисков / RDP . он должен просто работать с обычными / стандартными настройками на ВМ. Дважды проверьте настройки при запуске подключения к виртуальной машине.

ПРИМЕЧАНИЕ. Вопрос состоит из двух частей. Первая часть спрашивает "Как скопировать-вставить файлы". Это ответ на эту часть вопроса . (ВТОРАЯ часть спрашивает, как скопировать / вставить текст; например, операция с буфером обмена . Этот ответ НЕ об этом.)

Также смотрите эти другие ответы , относящихся к копировать / вставлять файлы в определенных ситуациях:
Для ESM-совместимых виртуальных машин
Для первоначальной настройки перед началом VM

Ключевая точка: После того, как вы настроили общую папку, вы можете затем выполнять обычное копирование файлов в представлении Windows Explorer на главном ПК, даже если источник находится на хосте, а место назначения - на виртуальной машине, или наоборот. То есть, общий доступ к сети - это не только отображение набора сетевых файлов на виртуальной машине, но и облегчение последующего перемещения отдельных файлов или полных папок между двумя разными компьютерами ( здесь виртуальная машина является одним из компьютеры ), как если бы они были на одном компьютере.

  • Диспетчер Hyper-V - диспетчер виртуальных коммутаторов.
    • Создать виртуальный коммутатор / внешний
    • Сетевой адаптер / виртуальный коммутатор = внешний виртуальный коммутатор сверху
    • Выберите вашу виртуальную машину (ее представление «Сеть») и войдите в систему с учетной записью администратора вашей виртуальной машины.
    • Скопируйте / Вставьте файлы в этом окне проводника на вашем хосте.

    ПРИМЕЧАНИЕ. Я проверил только свою учетную запись пользователя / папку «Документы», поэтому не знаю, существуют ли ограничения на то, что можно использовать совместно. Я предполагаю, что он работает точно так же, как и любой другой сетевой ресурс из виртуальной ОС, поэтому не должно иметь значения, что он виртуальный. Это просто еще одна машина в вашей сети, на которой установлена ​​эта ОС.

    Я также не проводил тестирование на виртуальной машине Linux, однако я проводил тестирование на Windows 7 с виртуальной машиной «Версия 1», которая работает, поэтому любая ОС, которая может работать под Hyper-V и которая поддерживает совместное использование сети с Windows, должна работать. ,

    Передача файлов с буфера обмена в Hyper V и копирование с Powershell

    Для передачи файлов через буфер обмена в Hyper V виртуальную машину есть несколько способов. Каждый из них отличается от версии операционной системы и условий в которых вы его хотите использовать, но любой из них позволяет копировать файлы в виртуальную машину с хоста и обратно.

    Первый вариант работает с версий ВМ Windows Server 2012 R2 и Windows 8.1 и называется Enhanced Session Mode (ESM). Эта возможность работает по тому же принципу, что и RDP, то есть мы можем использовать не только буфер обмена, но и USB устройства, принтеры и так далее. Отличия от RDP в том, что мы не используем сеть в данном случае, но если у вас настроены политики ограничивающие RDP подключения они могут быть причиной ошибок.

    По умолчанию Enhanced Session Mode включен. Мы можем проверить ее если зайдем в настройки Hyper V:

    Enhanced Session Mode Hyper V

    Включение буфера обмена Hyper V

    Или выполнить аналогичное через Powershell:

    Настройка расширенного сеанса Hyper V (ESM) устанавливается только на уровне сервера, но что бы у нас работала возможность копирования нужно включить и пакет интеграции Hyper V, который по умолчанию отключен. Эта служба интеграции называется Guest services (Гостевая служба), и она включается у каждой виртуально машины отдельно. Для ее включения зайдем в настройки виртуально машины:

    Настройки виртуальной машины Hyper V

    И включить гостевую службу:

    Копирование Hyper V

    Аналогичную настройку через Powershell можно сделать так:

    Последнее что нужно сделать - это включить службу "Remote Desktop Services":

    hyper v передача файлов

    Можно установить и в консоли PS:

    Теперь включим виртуальную машину и подключимся к ней:

    Включение виртуальной машины Hyper V

    О том что у нас включен режим расширенного сеанса можно увидеть по следующему окну. Если мы хотим проверить, что возможность использования буфера у нас включена нужно зайти в дополнительные настройки:

    Включение копирование файлов в виртуальную машину

    На второй закладке стоит галочка под Clipboard (Буфер обмена) - это то что нам нужно:

    Hyper V Clipboard буфер обмена

    После этого у нас будет работать в Hyper V буфер обмена путем копирования/вставки, а перетаскивание файлов в виртуальную машину работать не будет, так как такого функционала нет.

    Мы так же можем использовать Powershell:

    Microsoft описывает проблему, при которой копирование так же не будет работать и оно связано с политиками. По следующему пути нужно изменить политику с "Do not allow drive redirection" на "Disabled" или "Not Configured":

    Такого пути в групповых политиках я у себя не нашел.

    Передача файлов в Hyper V через публичную папку

    Второй вариант это создать в Hyper V виртуальную сеть через внутренний коммутатор. Внутренний или Internal коммутатор не использует физический сетевой адаптер и разрешает пользоваться таким типом соединения хосту Hyper V и виртуальным машинам. Таким образом затрачиваемые ресурсы, при копировании в Hyper V большого объема данных, не будут сильно отличаться от первого способа.

    Для создания внутреннего коммутатора нужно зайти в окно управления свичами:

    Создание виртуальных свичей Hyper V

    В новом окне выбрать "Internal" или "Частный":

    Создание частного свича Hyper V

    Ввести имя коммутатора и подтвердить создание:

    Создание частного коммутатора Hyper V

    Это делается в Powershell одной командой:

    После этого для каждой виртуальной машины, с которой мы хотим обмениваться данными, нужно подключить адаптер к этому коммутатору. Для этого зайдем в настройки виртуальной машины:

    Настройки виртуальной машины Hyper V

    Теперь создадим виртуальный сетевой адаптер:

    Создание сетевого адаптера Hyper V

    Теперь подключим адаптер к коммутатору:

    Подключение адаптера к коммутатору Hyper V

    В случае с Powershell это так же одна команда:

    В виртуальных машинах отобразится новое подключение и возможно потребуется настроить IP адрес, так как скорее всего у нас не будет доступ к DHCP серверу. Далее можно подключаться к машинам по сетевому пути.

    Копирование файлов в Hyper V через виртуальный диск

    Этот способ заключается в подключении виртуального диска отключенной ВМ. Мы можем создать новый диск или использовать системный диск операционной системы. Я крайне не рекомендую использовать этот способ, так как в случае существования чекпоинтов/снэпшотов на этой ВМ или если вы забудете размонтировать диск, это может привести к необратимым последствиям.

    Вы можете создать диск воспользовавшись статьей "Создание виртуальных дисков в Hyper V". Папку, где лежит виртуальный диск можно увидеть через настройки виртуальной машины:

    Жесткий диск Hyper V

    Если путь заканчивается на avhdx, то вы используете контрольную точку. Для монтирования диска нужно перейти по пути и выбрать Mount у vhd/vhdx файла:

    Монтирование VHD и VHDX в Hyper V

    В моем случае появилось два раздела, так как это системный диск. Для размонтирования дисков нужно кликнуть по разделу и нажать Eject.

    Если хотите выполнить команду через Powershell, то это можно сделать так:

    Командлет выше подразумевает, что у вас подключен один диск. В случае нескольких дисков запустите:

    Копирование в Hyper V используя буфер обмена с RDP

    Последний способ подключения работает через "Подключению к удаленному рабочему столу" или RDP. Для такой возможности копирования, кроме открытых портов и включенной возможности в свойствах компьютера дополнительных требований нет. Так же стоит проверить галочку в свойствах подключения RDP:

    date

    09.01.2020

    directory

    Windows Server 2012 R2

    comments

    комментария 2

    В обновленной роли 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 в hyper-v windows server 2012 r2

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

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

    Get-VMIntegrationService Powershell

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

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

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

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

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

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

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

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

    Отключить службу Guest Services можно так:

    Итак, благодаря службе Guest Services администратор Hyper-V может напрямую скопировать любой файл внутрь гостевой ОС виртуальной машины.

    В своей работе системным администраторам бывает необходимо перенести файлы в гостевую систему виртуальной машины. В этой статье описано как это сделать в системе виртуализации Hyper-V при невозможности скопировать файлы по RDP или по сети(как скопировать файлы в виртуальную машину VMware описано в одноименной статье).

    Есть несколько способов это сделать. Не буду подробно описывать первые два, просто скажу, что они есть и работают(иногда, только с их помощью и можно решить поставленную задачу, например если на ВМ установлена не Windows). В любом случае, выбирайте способ, который подходит в вашей ситуации.

    Первый способ.

    1. Первый способ заключается в создании ISO-образа, подключении его к машине, с которой надо скопировать файл, копировании на него нужных файлов, а потом монтировании к машине, на которую нужно эти файлы переместить.

    Второй способ.

    2. Второй способ аналогичен первому, только вместо ISO-образа используется файл виртуального жесткого диска(создать его можно на хосте в управлении дисками или в оснастке Hyper-V).

    Создание виртуального диска в Управлении дисками.

    Создание виртуального диска в Диспетчере Hyper-V

    С помощью вышеописанных способов, естественно можно переместить файлы и в обратном направлении, то есть из ВМ на хост Hyper-V.

    Перед тем как приступить к описанию двух других способов, нужно сказать, что я не смог использовать их при копировании файлов в гостевую систему, отличную от Windows. Поэтому, если у вас в качестве гостевой ОС используется Linux, то, скорее всего, придется использовать первые два.

    Еще: Как подключить ISO-образ к виртуальной машине vmware

    Третий способ.

    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).

    Четвертая версия PowerShell, вышедшая вместе с Windows Server 2012 R2, включает в себя некоторое количество новых командлетов для управления Hyper-V. Одним из таких командлетов является командлет Copy-VMFile, позволяющий копировать файлы в виртуальную машину напрямую, не используя сетевое подключение.

    Напомню, что утилита VMConnect, отвечающая в Hyper-V за локальное подключение к ВМ, в стандартном режиме не дает возможность перенести в гостевую систему файлы и папки, только текст. Правда есть еще расширенный режим подключения, но для него необходима поддержка гостевой системы, которая имеется только в новейших ОС Windows. Для всех остальных ОС при необходимости скопировать данные внутрь ВМ необходимо настроить сетевое подключение.

    С помощью командлета Copy-VMFile можно скопировать необходимые файлы в ВМ напрямую с хоста, не используя подключение по сети. Для примера возьмем виртуальную машину SRV2008R2 с установленной Windows Server 2008R2 (что исключает использование расширенного режима) и скопируем в нее файл Doc.txt командой:

    Copy-VMFile -Name SRV2008R2 -SourcePath ″D:\Doc.txt″ -DestinationPath ″C:\Doc\doc.txt″ -CreateFullPath -FileSource Host

    Копирование файлов в виртуальную машину

    Для работы командлета необходимо включение опции Гостевые службы (Guest services) в настройках ВМ на вкладке ″Integration Services″. Обратите внимание, что по умолчанию эта опция выключена.

    Сервисы интеграции в Hyper-V Manager

    Также включить ″Guest services″ можно из консоли PowerShell. Сначала проверяем их состояние:

    Get-VMIntegrationService -Name ″Guest Service Interface″ -VMName SRV2008R2

    И затем включаем:

    Enable-VMIntegrationService -Name ″Guest Service Interface″ -VMName SRV2008R2

    Читайте также: