全ての仮想マシンが停止したらホストをシャットダウンするスクリプト:山市良のうぃんどうず日記(178)
本連載第174回では、Windows Server 2016の更新プログラムのインストール時に実行が重なると影響が大きいメンテナンスタスクについて、時短に役立つかもしれないコマンドラインのテクニックを紹介しました。今回はその応用です。
特定のプロセスを監視して終了後にシャットダウンするスクリプト
本連載の第174回では、特に「Windows Server 2016」において、Windows Updateの更新プログラムのインストール処理と重なると影響が大きいバックグラウンド実行のメンテナンスタスクを、更新前または更新後に手動で実施することで、次回のWindows Updateの時短を図るコマンドラインのテクニックを紹介しました。
- あいかわらずWindows Server 2016の更新が遅々として進まない件(本連載 第174回)
その際に紹介したPowerShellスクリプト「myprocmon.ps1」は、Windows Server 2016のデスクトップエクスペリエンス環境で、自動クリーンアップ処理のためにバックグラウンドで実行される、または手動で実行した「ディスククリーンアップ」のプロセス(cleanmgr)の存在を定期的に確認し、プロセスが終了したら監視を終了するというものでした。cleanmgrプロセスが実行中の物理マシンや仮想マシンでこのスクリプトを実行すれば、後は放置しておいてもシャットダウンして停止してくれます。
「\Microsoft\Windows\DiskCleanup\SilentCleanup」タスクの実行中、またはこのタスクに設定されたコマンドライン(cleanmgr.exe /autoclean /d C:)の手動実行と組み合わせて利用することを想定して作成しましたが、「Windows 10」で「ディスククリーンアップ」を実行し、「Windows Updateのクリーンアップ」を選択して、時間がかかるクリーンアップを実施するときにも活用できます(画面1、画面2)。
while(1) { $procid = (Get-Process -ProcessName "cleanmgr" -ErrorAction SilentlyContinue).Id if ($procid.Length -eq 0) { Write-Host "cleanmgr not running currently" break } else { Write-Host "cleanmgr (PID" $procid ") is alive" } Start-Sleep -seconds 15 } TIMEOUT 30 Stop-Computer -Force
全ての仮想マシンが停止したらHyper-Vホストを停止するスクリプト
PowerShellスクリプト「myprocmon.ps1」を作成してからは、何かしらの処理の実行を開始して放置し、自動終了させるために、いろいろと重宝しています。Hyper-Vの仮想マシンのゲストOSで利用することが多いのですが、今回はHyper-Vホストの稼働状況と連動することも考えてみました。
Copyright © ITmedia, Inc. All Rights Reserved.