Я знаю, как подключиться к виртуальным машинам 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.