Microsoft Security Essentials(以下, MSE)はご存知Microsoftが作った アンチウイルスソフトウェアである。

普通はGUIで使うものだが、実はコマンドラインからも使える。
コマンドラインから使えると、バッチ処理ができる。
あらいいですね。

バッチ処理できると何が便利か。

たとえばフォルダA、B、C配下すべてのファイルをスキャンしたい。
しかも定期的に。
これをGUIでやろうとすると、その都度、いちいちフォルダをマウスやキーボードで選ばないといけない。
ノーグッドである。
ランチャーに登録したバッチファイルを実行するほうがはるかにビウティフルである。
以下に方法を示す。
なおMSEは4.4.304.0、Windows 7での内容である。

コマンドライン版MSEのありか

Microsoftのサイトからインストール済みなら、以下の場所にある。

%ProgramFiles%\Microsoft Security Client\MpCmdRun.exe

フォルダを開きたいならWindowsキー+Rで開いたウインドウに以下を貼り付けて実行せよ。

%ProgramFiles%\Microsoft Security Client\

使うべきMSEのオプション

定義ファイルのアップデート
-SignatureUpdate
スキャン
-Scan -ScanType 3 -File <ファイル、あるいはフォルダのパス>

なおScanTypeには0〜3がある。
一見、選択肢がありそうだが、ファイル/フォルダを指定したい場合には3の一択である。
以下は参考。

-Scan [-ScanType value]
    0  Default, according to your configuration
    1  Quick scan
    2  Full system scan
    3  Single file custom scan

       [-File ]
            Indicates the file path to be scanned, only valid for custom scan

バッチファイルの例

下記の通り、-Fileに続けてスキャン対象フォルダを並べるだけ。
フォルダはリモートフォルダでもよい。
となると、使い勝手は格段によくなりますな。

@echo off
setlocal
set path=%programfiles%\Microsoft Security Client\;%path%
@echo on
MpCmdRun.exe -SignatureUpdate
MpCmdRun.exe -Scan -ScanType 3 -File c:¥data
MpCmdRun.exe -Scan -ScanType 3 -File \\192.168.0.5\sharedfolder
pause

またこの例では、結果を目視確認したいので、最後にpauseを入れてスキャン終了後もコマンドプロンプトを開いたままにしている。
それが嫌ならpauseを消して、最初に@echo offをつければよろしい。
でもその場合、結果はどうやったらわかるのか。

結果はどこに出るの?

C:\WINDOWS\Temp\MpCmdRun.log にスキャン結果が記録されるので、ゆっくりご覧になればよい。

以下はログの例
「MpScan() has detected 0 threats.」とのこと。

-------------------------------------------------------------------------------------
MpCmdRun: Command Line: "C:\Program Files\Microsoft Security Client\Antimalware\MpCmdRun.exe" -scan -Scantype 3 -File \\192.168.0.5\sharedfolder
Start Time: ‎日 ‎2 ‎16 ‎2014 17:15:32

Start: MpScan(MP_FEATURE_SUPPORTED, dwOptions=3, path \\192.168.0.5\sharedfolder, DisableRemediation = 0)
INFO: This is a resource scan. skipping signature updateScanning path as folder: \\192.168.0.5\sharedfolder.
MpScan() started
Time Info - ‎日 ‎2 ‎16 ‎2014 19:23:59 MpScan() was completed
Finish: MpScanStart(MP_FEATURE_SUPPORTED, dwOptions=16385)
Finish: MpScan(MP_FEATURE_SUPPORTED, dwOptions=16385, path \\192.168.0.5\sharedfolder, DisableRemediation = 0)
Scanning \\192.168.0.5\sharedfolder found no threats.
MpScan() has detected 0 threats.
MpCmdRun: End Time: ‎日 ‎2 ‎16 ‎2014 19:23:59
-------------------------------------------------------------------------------------

応用例

以下のようなバッチファイルを例えばvscan.batという名前で保存する。
保存先はパスの通った場所にする。
こうしておけば、Windows + Rでウインドウを開き、vscan <スキャンしたいフォルダ> と叩けば素早くスキャンできる。
ビウティフル。

@echo off
setlocal
set path=%programfiles%\Microsoft Security Client\;%path%
MpCmdRun.exe -Scan -ScanType 3 -File %1
pause