Назад | Перейти на главную страницу

Полный неинтерактивный запуск + подключение к ВМ из PowerShell

Я знаю, как подключиться к виртуальным машинам Hyper-V из интерфейса командной строки:

vmconnect localhost 'machine'

Я также знаю, как запускать их неинтерактивно, я делаю это с помощью ярлыка, например:

powershell.exe -ExecutionPolicy Bypass -Command "& {Start-VM -Name 'machine'}"

Но как мы можем объединить два действия в один ярлык? Я вообще не хочу открывать консоль Hyper-V. Я пробовал это, но это не сработало:

powershell.exe -ExecutionPolicy Bypass -Command "& {Start-VM -Name 'machine' & vmconnect localhost 'machine'}"

Выбрасывает:

At line:1 char:36
+ & {Start-VM -Name 'machine' & vmconnect localhost 'machine ...
+                                    ~
The ampersand (&) character is not allowed. The & operator is reserved for future use; wrap an ampersand in double
quotation marks ("&") to pass it as part of a string.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : AmpersandNotAllowed

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

Вам не хватает двух вещей: вы должны импортировать модуль Hyper-V перед запуском виртуальной машины и & является оператором вызова, а не разделителем команд.

powershell.exe -ExecutionPolicy Bypass -Command "ipmo hyper-v; Start-VM machine; vmconnect localhost machine"

Я протестировал вышеуказанное на Windows 10 1703.