treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

コマンドラインでWindowsDefender除外設定を追加してみる

Windows Defenderの除外設定をバッチファイルで実行できるようにする必要があったため、やってみた内容と動作の確認をご報告です。

Windows Defenderをコマンドラインで設定する

Windows Defenderの除外設定をバッチファイルで実行する必要が出て、やり方を調べて動作確認をやってみることになりました。

今回やりたいことは、

このWindows Defenderの除外設定を(通常なら)手入力していくところを、バッチファイルで一括で必要な設定値を登録していくようにするのが目標です。設定したい値はフォルダ(ディレクトリ)とファイル拡張子がそれぞれ複数あります。

調べたところでは、以下のPowerShellコマンドレットで実現できそうだということで、さっそく確認してみます。

以下、設定のコマンドラインは上述のURLに記載のあるリファレンスを元にやってみました。

(今回使う)各コマンドの書式

前述のURLのコマンドリファレンスから、以下のコマンドレットで実行可能ということがわかりました。

※除外フォルダの追加

Add-MpPreference -ExclusionPath

※除外するファイル(拡張子)の追加

Add-MpPreference -ExclusionExtension

※追加したフォルダやファイル拡張子の削除

Remove-MpPreference -ExclusionPath

Remove-MpPreference -ExclusionExtension

 

PowerShellコマンドレットなので、頭につくAddやRemoveで動きが変わります。オプションは共通で使えるようです。今回は既存の除外エントリを削除せず残したまま追加登録したいので「Set-MpPreference」ではなく、「Add-MpPreference」を使って除外設定を追加していくことにしました。

対象とするフォルダはテスト用に用意したフォルダにします。

このフォルダを指定して除外設定とするバッチファイルとしました。

例)除外フォルダパスの追加(PowerShellで実行するコマンドレット)

Add-MpPreference -ExclusionPath "C:\temp\testDir\Test-A"

これをバッチファイルで実行可能な記述に直すと以下のようになります。

例)バッチファイル表記(※ " は ' に置き換えする)

Powershell -Command  (Add-MpPreference -ExclusionPath 'C:\temp\testDir\Test-A')

これ以降の書式はバッチファイル表記で記載していきます。

例)ネットワークドライブを指定する

Powershell -Command  (Add-MpPreference -ExclusionPath 'J:\')

今回はsubstコマンドで仮に作ったドライブですが、ネットワークドライブを想定してドライブレターを除外にする際の設定も試してみます。

例)ファイル拡張子を指定して除外設定する

Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhd')

拡張子指定は"."を忘れないように入れます。

バッチファイルを作成

バッチファイルを作成しました。今回は動作の検証を目的としたため、設定を追加したり、削除したりをバッチファイル内で実行してみるようにします。

--------------------------------------------------------------
test-addMP.bat
--------------------------------------------------------------
@echo off
rem Windows Defender ウイルス対策のスキャンから以下を除外する項目として追加します。
rem テストバッチファイル
Powershell -Command  (Add-MpPreference -ExclusionPath 'C:\temp\testDir\Test-A')
Powershell -Command  (Add-MpPreference -ExclusionPath 'C:\temp\testDir\Test-B')
Powershell -Command  (Add-MpPreference -ExclusionPath 'C:\temp\testDir\Test-C')

echo ..テスト用メッセージ
echo この後登録した"C:\temp\testDir\Test-B"を削除します。
pause
Powershell -Command  (Remove-MpPreference -ExclusionPath 'C:\temp\testDir\Test-B')
echo ..テスト用メッセージ
echo いったん登録した"C:\temp\testDir\Test-B"を削除しました。
echo Windows セキュリティの除外設定画面で確認してください。
pause

Powershell -Command  (Add-MpPreference -ExclusionPath 'J:\')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhd')
Powershell -Command  (Add-MpPreference -ExclusionExtension '.vhdx')
--------------------------------------------------------------

単純にWindows Defender除外設定の追加と削除のコマンド連続実行です。実際に実行した際の動作確認をしてみます。

動作確認

※実行には「管理者として実行」されたコマンドプロンプトが必要です。

バッチファイルを実行すると、

まずは、pause行で処理を一時停止するところまで処理が進みます。このため、除外設定には「Add-MpPreference -ExclusionPath」で指定したフォルダのパスが追加されました。

この後、「Remove-MpPreference -ExclusionPath」で指定した一行が削除されるはずです。

進めると、

画面をリアルタイムで見ながらバッチファイルを実行してみると分かりやすいのですが、「Remove-MpPreference -ExclusionPath」で指定した"C:\temp\testDir\Test-B"のエントリが消えました。この後、残りの設定追加のコマンド行が実行されます。

最終行までの実行が確認できました。

主な使用用途

動作の確認ができましたので、後はテスト用に記載したフォルダパスなり拡張子なりを書き換えたり、行を追加して必要な除外設定を増やしたりするだけで使い回しのできるバッチファイルとなります。

クライアントHyper-Vの除外設定を揃えるのに使ったり、複数のPCで特定のソフトウェアのファイルを除外するのに使ったりできそうです。タスクスケジューラ(とか他のサードパーティ製ソフトウェア)でバッチファイルを自動実行できるようになっていればこのバッチファイルを仕掛けておくことで一台づつ実行しなくてもいいので省力化ができそうです。