web-dev-qa-db-ja.com

完全な非対話型の開始+ PowerShellからVM

CLIからHyper-VVMに接続する方法を知っています。

vmconnect localhost 'machine'

私はそれらを非対話的に開始する方法も知っています、私はこのようなショートカットを介してこれを行います:

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

しかし、この2つのアクションをショートカットで組み合わせるにはどうすればよいでしょうか。 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

さらに、私が思うに、起動してから接続するまでの時間間隔を待つ必要があります。そのようなコマンドの即時シーケンスは正常に実行されないためです。

1
Suncatcher

不足していることが2つあります。VMを開始する前にHyper-Vモジュールをインポートする必要があり、&はコマンドセパレータではなく呼び出し演算子です。

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

私はWindows101703で上記の動作をテストしました。

1
Persistent13