以下の内容はhttps://blog.treedown.net/entry/2026/03/17/010000より取得しました。


クライアントHyper-V用にWindowsDefender除外設定を追加するバッチファイル

以前に「コマンドラインでWindowsDefender除外設定を追加してみる - treedown’s Report」でWindowsDefender除外設定をバッチファイルで実行してみましたが、今回はクライアントHyper-V用の除外をバッチファイル化してみることにしました。

Hyper-Vのウイルス対策の除外

Microsoft推奨のウイルス対策除外設定は以下のページで確認しました。

※Hyper-V ホストに推奨されるウイルス対策の除外
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/virtualization/antivirus-exclusions-for-hyper-v-hosts

なかなかたくさんあります。

前回のフォルダパスや拡張子の除外に加えて、プロセスの除外が必要になるという記載もありました。

プロセスの除外をコマンドレットで実行する

プロセスの除外は前回「コマンドラインでWindowsDefender除外設定を追加してみる」で実施しなかったので、改めて調べてみました。

※Add-MpPreferenceのリファレンス
https://learn.microsoft.com/ja-jp/powershell/module/defender/add-mppreference?view=windowsserver2025-ps

「-ExclusionProcess」の説明に「このコマンドレットでは、指定したプロセスによって開かれたファイルはスケジュールされたリアルタイム スキャンから除外されます。」と記載があります。

コマンド書式:

Add-MpPreference -ExclusionProcess "プロセス実行ファイル.exe"

このコマンドレットで

vmms.exe(Hyper-V仮想マシン管理サービスプロセス)やvmwp.exe(Hyper-Vワーカープロセス)をフルパスで指定してプロセス除外ができるようです。

バッチファイル

前回までで試したコマンドレットに加えて、プロセス除外の「Add-MpPreference -ExclusionProcess」を使ってクライアントHyper-Vで使うWindows Defender除外設定を一括で実行するバッチファイルを作成してみました。

--------------------------------------------------------------
※バッチファイル:
--------------------------------------------------------------
@echo off
rem 管理者権限で実行されているかどうかを確認して実行
whoami /priv | find "SeSystemtimePrivilege" > nul
if %errorlevel% neq 0 (
 powershell -command start-process %~0 -verb runas
 exit
)

rem 処理開始

rem 拡張子除外
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhd')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhdx')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.avhd')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.avhdx')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhds')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhdpmem')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.iso')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.rct')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.mrt')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vsv')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.bin')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.xml')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vmcx')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vmrs')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vmgs')

rem フォルダ除外
Powershell -Command  (Add-MpPreference -ExclusionPath '%ProgramData%\Microsoft\Windows\Hyper-V')
Powershell -Command  (Add-MpPreference -ExclusionPath '%Public%\Documents\Hyper-V\Virtual Hard Disks')
Powershell -Command  (Add-MpPreference -ExclusionPath '%SystemDrive%\ProgramData\Microsoft\Windows\Hyper-V\Snapshots')

rem プロセス除外
Powershell -Command  (Add-MpPreference -ExclusionProcess 'Vmms.exe')
Powershell -Command  (Add-MpPreference -ExclusionProcess 'Vmwp.exe')
Powershell -Command  (Add-MpPreference -ExclusionProcess 'Vmsp.exe')
Powershell -Command  (Add-MpPreference -ExclusionProcess 'Vmcompute.exe')

--------------------------------------------------------------

このバッチファイルを、Add-MPHV.batといったファイル名で保存し、テスト環境で実行してみます。

テスト環境で実行し動作確認

バッチファイルを実行するPCの所定の場所にバッチファイルを保存して、バッチファイルを実行してみます。

テスト環境なのでc:\tempに保存して実行してみました。(バッチファイル内で管理者実行を入れていますのでUACが動作します。)

動作すると、管理者実行のコマンドプロンプト画面が表示され、設定が追加されていきます。
バッチファイルの動作完了後、設定画面からWindowsセキュリティで指定した設定値が登録されているかどうかを確認しました。

問題なく登録されているようです。

今回初めてバッチファイル経由で実行したプロセスの登録も、

このように登録されていました。

バッチファイルの動作は問題なく完了できたようです。

使用イメージ

クライアントHyper-V用なのでキッティング時に実行してもよさそうですが、Windows Defender除外設定は手動で設定を入力する際にパスが存在していないとエラーになるため、クライアントHyper-Vの役割を追加してからバッチファイルを実行して設定を実施する、というタイミングでバッチファイルを使うことになりそうです。

クライアントHyper-Vを頻繁に構築する予定がある(?)ユーザにはいいかも。いないか。




以上の内容はhttps://blog.treedown.net/entry/2026/03/17/010000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14