У меня есть виртуальная машина в диспетчере Hyper-V (Windows 2008 R2) без сети, настроенной на виртуальной машине. Из сценария PowerShell, запущенного на главном сервере Windows, я хотел бы запросить в ОС этой локальной виртуальной машины определенную информацию (например, завершился ли данный процесс).
Я использую модуль pshyperv codeplex (https://pshyperv.codeplex.com/) для взаимодействия с диспетчером Hyper-V, но единственный командлет для подключения к виртуальной машине - это New-VMConnectSession, который запускает подключение vmconnect.exe к виртуальной машине. Поскольку vmconnect.exe по сути является RDP, он не очень удобен для сценариев.
Есть ли способ отправить команду в ОС локальной виртуальной машины и получить вывод из сценария PowerShell хоста, если на виртуальной машине не настроена сеть? (Я считаю, что утилита vmrun от Vmware имеет такую возможность)
Другой способ задать этот вопрос: есть ли у Hyper-V форма vmconnect.exe без графического интерфейса?
(PS. Не уверен, было ли это большим переполнением стека или ошибкой сервера)
vmconnect
позволяет клиенту подключаться к гипервизору. Он действительно использует протокол RDP, обычно с гипервизором, выступающим в роли «сервера». ВМ совершенно не осведомлена об этом взаимодействии, она просто видит VGA или подобное устройство. В более новых ОС, где и Hyper-V, и виртуальная машина поддерживают определенное расширение RDP через VMbus, клиент знает о соединении. Но даже в этом случае он обрабатывается не через «сетевое» соединение, а через гипервизор.
Не существует встроенных способов общения так, как вы хотите. Вы можете либо написать собственный драйвер VMbus, который обменивается данными от хоста к виртуальной машине по виртуальной шине Hyper-V; или используйте каналы с ворсом, привязанные к последовательным портам; но для обоих потребуется некоторые усилия.
В вашем комментарии говорится, что вы хотите иметь возможность запускать команды на виртуальной машине, но вам не нужен графический интерфейс.
Вы можете включить консоль EMS, если в качестве гостевой ОС используется какая-либо версия Windows Server. Это приведет к появлению консоли на одном из последовательных портов виртуальной машины. (Вы выбираете, какой именно.) Затем вы можете подключиться к нему с помощью PuTTY или другого эмулятора VT100. Оттуда вы можете запустить сеанс командного окна и запускать любые программы, которые вам нравятся. (Это, конечно, заставит вас войти в систему.)
Дополнительные сведения о включении консоли EMS см. В следующих статьях:
Конечно, вы также можете сделать это, обновив свой хост до Server 2012 R2. Затем вы можете использовать Hyper-V для размещения файлов в виртуальной машине с помощью PowerShell на уровне размещения. Вы можете настроить периодическую задачу в гостевой системе, чтобы запускать все, что она там находит.