LoginSignup
CLOVER28
@CLOVER28

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Hyper-Vの再起動をスケジュール実行するやり方について

やりたい事

① ホストサーバで動いているHyper-V環境の内、特定の環境を定期的に再起動させたい
② 定期的なメモリ開放を目的として、Hyper-Vに存在する環境の内、状態が実行中になっている環境を毎日再起動させたい
③ 動かすマシンは不定期に変更となる為、各仮想マシン内のタスクスケジューラーでの再起動ではなく、仮想マシンを動かしているホストサーバから再起動のスケジュールを組みたい
 (またこの際、10環境を一気に再起動するのではなく、1環境ごとに10分ずつずらしながら再起動をさせたい)

技術系の質問は初投稿の為、至らない質問かもしれませんが、
お力添え頂けますと幸いです。

WindowsServerにてHyper-Vを用いり、約40程の仮想環境を動かしております。
以下の理由により、動いている仮想環境に対して定期的に再起動を行いたいです。
・ホストサーバのメモリ容量が少なくなった
・全ての環境が常時稼働している訳ではない為、定期的にメモリを開放したい

再起動の管理はホストサーバ側にて管理したい為、PowerShellのスクリプトを用いて
ホストサーバ側のタスクスケジューラを40個程設定し、毎日実行させるやり方を想定しております。
(③の条件を満たして、スケジュールを40個も登録せずに済む方法があれば、是非とも教えて頂きたいです)

以下のコマンドをps1ファイルで実行したところ、再起動の処理自体は行えましたが
仮想マシンにログインすると、「シャットダウンイベントの追跡ツール」が表示されておりました。

自動再起動テスト.ps1

#特定の社内環境を再起動させる。
Restart-VM -Name "【仮想環境名】"-Force

追跡ツールのメッセージが表示されるという事は、「シャットダウン」ではなく「停止」の処理であり
言わば電源ボタンを直接長押しして強制的に終了させた際のイレギュラーとして表示される認識でおります。
Restart-VMで実行した際は通常のシャットダウンと同じ様な処理が行われており
追跡ツールが表示される事については問題ないようでしょうか?

またRestart-VMで毎日のスケジュールを組む事が適しておらず、他に適切なやり方があれば、教えて頂けますと幸いです。

0

1Answer

まず、一点目

Restart-VMは Hyper-V操作の「リセット」に相当するようです。
目的の挙動にするためには一旦シャットダウンしてから再び起動させればよさそうです。

Stop-VM "【仮想環境名】"
Start-VM "【仮想環境名】"

次に、稼働しているゲストは不定期に変わるということですから、以下のような一文で稼働中のゲストを取得できると思います。

Get-VM |? {$_.State -eq 'Running'} |% {$_.Name}

これに先ほどの再起動を組み入れると

Get-VM |? {$_.State -eq 'Running'} |% {Stop-VM $_.Name;Start-VM $_.Name}

こうなります。

さらに、10分ずらしながらとなると

Get-VM |? {$_.State -eq 'Running'} |% {Stop-VM $_.Name;Start-VM $_.Name;Sleep 600}

こんな感じでしょうか。

0

Comments

  1. @CLOVER28

    Questioner

    ありがとうございます!
    本番での動作はまだですが、動作チェックを行った上で参考とさせて頂きます!

Your answer might help someone💌