本記事は、マイクロソフト社員によって公開されております。
こんにちは、Windows サポートチームの三浦です。
本日は、Hyper-V 仮想マシンの自動起動がキャンセルされる事象について紹介させていただきます。
概要
Hyper-V では、[自動開始アクション] を設定することにより、ホスト マシンの OS 起動時に仮想マシンを自動的に起動するよう設定することが可能です。
しかしながら、仮想マシンの自動起動を有効にしている場合であっても、該当の仮想マシンがリモート デスクトップ サービスの仮想デスクトップ コレクションに追加されている場合、該当の仮想マシンの自動起動がキャンセルされる場合があることが確認できております。
対象 OS
Windows Server 2016 以降の Hyper-V 環境で発生する可能性がございます。
原因
仮想マシンが仮想デスクトップ コレクションに追加されている場合、RDS 関連の処理に伴い ModifyKvpItems と呼ばれる Method が実行されます。
本 Method が実行された場合、仮想マシンの status 変更が行われますが、この status 変更が自動起動の待機中に行われることで、自動起動の処理がキャンセルされる事象が発生いたします。
参考情報 :
ModifyKvpItems method of the Msvm_VirtualSystemManagementService class
回避策
誠に恐れ入りますが、仮想デスクトップ コレクションに追加されている仮想マシンの自動起動が必要な場合は、Hyper-V の自動起動の機能ではなく、仮想マシンを起動するためのタスク等を別途作成いただき、自動起動を行っていただきますようお願いいたします。
回避手順例
ファイル名を指定して実行に [taskschd.msc] と入力して実行し、タスクスケジューラを起動します。
右ペインの [タスクの作成] を選択します。
[全般] タブにて任意のタスク名を入力し、[ユーザーがログオンしているかどうかにかかわらず実行する] と [最上位の特権で実行する] にチェックを入れます。
[トリガー] タブで [新規] を選択し、[タスクの開始] に [スタートアップ時] を指定します。
本設定により、OS 起動時にタスクが自動実行されます。※ 必要に応じて、[詳細設定] 配下にある [遅延時間を指定する] にチェックを入れ、任意の遅延時間をご指定ください。
[操作] タブでは、以下のように各項目を指定します。
プログラム/スクリプト : %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
引数の追加 : -Command “Start-VM [VMName]”
開始 : 空白 (ブランク)[条件]、[設定] タブは必要に応じて設定を変更し、[OK] を選択して、タスクの作成を完了させます。
以上で設定は完了となります。
補足事項
Hyper-V レプリカを構成している環境で発生する自動起動の問題については、下記の情報をご参照ください。
Hyper-V 仮想マシンの自動起動が失敗する事象について