Powershell
完全非互動式啟動 + 從 PowerShell 連接到 VM
我知道如何從 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 上測試了上述工作。