Windowsを使っていると、ときどきWindowsセキュリティ(Defender)からの通知を見ることがある。今回は、このWindowsセキュリティの機能をコマンドラインから使う方法を解説する。

Windowsセキュリティの「ウィルスと脅威の防止」が、Microsoft Defender Antivirusのウィンドウになる。すべての履歴を見るには、「フィルター」で「フィルターのクリア」を選択する
そもそもDefenderとは?
以前からWindowsを使っているユーザーからすれば、Windowsのセキュリティ機能といえば「Defender」を思い浮かべるだろう。Defenderの名称は、Windows XP時代の2006年(これ以前にベータ版が配布されていた)にスパイウェア対策ソフトに使われた。これは買収した製品(GIANT Company SoftwareのGIANT AntiSpayware)の名前を変更したものだった。当時のWindowsは標準でコンピューターウイルス対策機能を持っていなかった。
Windows 7で、ウイルス対策機能を持つMicrosoft Security Essentialsに一旦置き換えられたが、Windows 8では、Defenderの名称でウイルス対策機能を含めて復活する。Windows 10では、ファイアウォールやさまざまなセキュリティ機能にDefenderの名称を使った。
2017年のRS3(Fall Creater Update。Windows 10 Ver.1709)以後は、Defenderはセキュリティ対策の総合ブランド名になった。ただしそのせいか、「Windows Defenderナントカ」「Microsoft Defenderカントカ」といった名前が氾濫し、さらにそれらの製品が統合されて別の名前になるなど、かなり混乱した様相があった。
現在では、Windowsのセキュリティ設定には「Windowsセキュリティ」という名称が使われている。ここは、もともとは「Windows Defender セキュリティ・センター」という名称だった。設定ページからはDefenderの名称が消えたものの、ヘルプページには残っている。
また、個別機能にもDefenderの名前が残る。たとえば、ウイルス対策機能が「Windows Defender Antivirus」(Microsoft Defender Antivirusとも、日本語ではWindows/Microsoft Defenderウイルス対策)、ファイアウォールが「Windows Defenderファイアウォール」である。現状、Microsoft Defenderという用語は、Microsoft 365で提供されるセキュリティ機能の名称として使われているようだ。ただし、Microsoftの常として、文書が混乱していることがある。
また、後述するmpcmdrun.exeコマンドやPowerShellコマンド、WMIのクラス名などに含まれる「MP」は、Microsoft Security Essentialで開発された「Microsoft Malware Protection Engine(MSMPENG)」の「Malware Protection」に由来する。現在でもmsmpeng.exeというプログラムがWindowsに含まれている。
ここでは、ウィルス対策のDefender Antivirusの機能を対象とする。Defenderファイアウォールに関しては、本連載の過去記事(「WindowsのファイアウォールをPowerShellから制御する」)を参考にしてほしい。
Defenderをコマンドラインから扱う
Windowsセキュリティの機能をコマンドラインから使うには、大きく3つの方法がある。1つはcmd.exeからも利用できるmpcmdrun.exeプログラム、もう1つはWIM(CIM)経由、最後はPowerShellコマンドだ。
なお、グループポリシー(gpedit.msc)の「コンピュータの構成」→「管理用テンプレート」→「Windowsコンポーネント」→「Microsoft Defender ウィルス対策」で、Defenderの挙動や一部設定を変更できる。グループポリシーはHome Editionなどで利用できないため、ここでは解説を省略する。なお、解説は以下のMicrosoftのサイト上にある(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/use-group-policy-microsoft-defender-antivirus?view=o365-worldwide)。
mpcmdrun.exeに関しては、マイクロソフトのサイトにある「コマンドラインを使用して Microsoft Defender ウイルス対策を管理する」(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/command-line-arguments-microsoft-defender-antivirus?view=o365-worldwide)に情報がある。コマンドは以下のパスにあり、PATH環境変数に設定がないため、パスを直接指定する必要がある。「-?」オプションでオンラインヘルプを表示する。
C:\Program Files\Windows Defender\MpCmdRun.exe
exeコマンドであるため、cmd.exeでも利用可能である。なお、後述するPowerShell Defender系コマンドとの違いだが、定義ファイルの扱いや各種レポート/ログの出力など、Defenderの「素」の機能に近いのがmpcmdrun.exeで、WMIとPowerShell側は主にDefender関連の管理を中心とした機能になる。
WMI(CIM)を使う場合には、
Get-CimInstance -ClassName MSFT_MpComputerStatus -Namespace root/microsoft/windows/defender -Property *
などとする。クラス名(以下の表)だけでなく名前空間(Namespace)も指定が必要になる。
これに関しては「WMI を使用してMicrosoft Defenderウイルス対策を構成する」(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/use-wmi-microsoft-defender-antivirus?view=o365-worldwide)に解説があり、クラス名に関しては、「Windows Defender WMIv2 Provider(英語)」(https://learn.microsoft.com/ja-jp/previous-versions/windows/desktop/defender/windows-defender-wmiv2-apis-portal)に記述がある。ここでは、クラス名だけを挙げるのみにしておく。というのは、PowerShellのDefender系コマンドは、出力するオブジェクトがWMIのDefenderクラスをベースとしており、WMIの上に構築されているのだと思われるからだ。

この連載の記事
-
第472回
PC
WindowsのエラーをMicrosoftに送信するテレメトリ機能を理解する -
第471回
PC
Windowsのコマンドラインでエイリアスを使う -
第470回
PC
Windows用のパッケージマネージャー「Winget」 プレビュー版で機能が充実してきた -
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う - この連載の一覧へ