Powershell

完全非互動式啟動 + 從 PowerShell 連接到 VM

  • July 28, 2017

我知道如何從 CLI 連接到 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

此外,在我看來,應該在啟動和連接之間等待一段時間,因為這些命令的立即序列不會成功執行。

您缺少兩件事:您必須在啟動 VM 之前導入 Hyper-V 模組,並且&是呼叫運算符而不是命令分隔符。

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

我已經在 Windows 10 1703 上測試了上述工作。

引用自:https://serverfault.com/questions/864676