ホーム 院内・スタッフ紹介 診療時間・アクセス フォトギャラリー
0574-27-6355

院長のメモ帖

2013年10月 7日 月曜日

WS2012R2の再起動時にVMがオフになる その2

前回報告した、Windows Server 2012R2のVMがホスト再起動・シャットダウン時に正常シャットダウンせず電源Off状態になる不具合は、MicrosoftのWinodws Server Forumでも報告されていて、現時点で解決策はなさそうです。しょうがないので、以下のようなpowershellスクリプトを作ってしのいでいます。

# HyperVホスト再起動スクリプト
# Arg1 再起動するホスト。指定しない場合はローカルPCを再起動する。
$WaiToKillTime = 180

if (!([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    write-host "実行には管理者特権が必要です。"
    exit
}

if ($args.Length -eq 0) {$comp = $env:COMPUTERNAME} else {$comp = $args}

$VmAll = Get-VM -ComputerName $comp
write-host Target:$comp

if ($VmAll.Count -eq 0)
{
    Write-Host "VMが存在しないので処理をキャンセルします。"
}
else
{
    #起動していないVMは、次回起動しない。
    $VmAll | where state -NE Running | where AutomaticStartAction -NE Nothing | set-vm -AutomaticStartAction Nothing
       
    $vms = $VmAll | where state -EQ Running #起動しているVM
    $vms | Stop-VM -AsJob                   #非同期で停止
    $vms | where AutomaticStartAction -NE Start | set-vm -AutomaticStartAction Start #次回起動するようマーク

    #VMがすべてシャットダウンするかタイムアウトするまで待つ
    for ($i = 1; $i -lt $WaiToKillTime; ++$i)
    {
        $vs = Get-VM -ComputerName $comp | where state -EQ Running
        if ($vs.count -eq 0) { break}
        $vs | select name | ft
           
        start-sleep -s 1
    }
   
    Restart-Computer -ComputerName $comp -Force      #ホストのリスタート開始
}


このスクリプトでは、現在実行中のVMの「自動開始アクション」を「常に開始に」、実行していないVMは「何もしない」に変更し、実行中のVMをシャットダウンします。
続いて、全VMがシャットダウンするかタイムアウト(180秒)するまで待ってから、ホストコンピューターを再起動させます。

とりあえず、Windows Updateを手動にしてこのスクリプトで再起動させてしのいでいますが、10/17の正式発売日には修正されているんでしょうか。今回Win8.1とWin2012R2のRTMがMSDN/TechNetにいったんは提供されないと発表されたのは、実はまだ開発中で本来のRTMの水準に達していなかったからではないかと疑ってしまいます。とにかく不振のWin8を立て直すためにWin8.1の発売を延期することは考えられなかったので、ぎりぎりまで修正を続けて、発売日には結構な数の修正プログラムがWindows Update経由で提供されるんじゃないでしょうか。


投稿者 美濃加茂市のIT獣医師 近藤 博 | コメント(0)

コメントする

名前:

メールアドレス:

コメント:

カレンダー

2023年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31