Microsoft Defender ウイルス対策用のパフォーマンス アナライザー
適用対象
- Microsoft Defender for Endpoint Plan 1
- Microsoft Defender for Endpoint Plan 2
- Microsoft Defender ウイルス対策
プラットフォーム
- Windows
要件
Microsoft Defender ウイルス対策パフォーマンス アナライザーには、次の前提条件があります。
- サポートされている Windows バージョン:
- Windows 10
- Windows 11
- Windows Server 2016 以降
- Windows Server 2012 R2 ( 最新の統合ソリューションを使用してオンボードされている場合)
- Windows Server 2012 R2 の場合、Windows ADK (Windows パフォーマンス ツールキット) が必要です。 Windows ADK をダウンロードしてインストールする
- プラットフォーム バージョン:
4.18.2108.7
以降 - PowerShell バージョン: PowerShell バージョン 5.1、PowerShell ISE、リモート PowerShell (4.18.2201.10 以降)、PowerShell 7.x (4.18.2201.10 以降)
Microsoft Defender ウイルス対策パフォーマンス アナライザーとは
Microsoft Defender ウイルス対策を実行しているデバイスでパフォーマンスの問題が発生している場合は、パフォーマンス アナライザーを使用して Microsoft Defender ウイルス対策のパフォーマンスを向上させることができます。 パフォーマンス アナライザーは、ウイルス対策スキャン中に個々のエンドポイントでパフォーマンスの問題を引き起こす可能性があるファイル、ファイル拡張子、プロセスを特定するのに役立つ PowerShell コマンド ライン ツールです。 パフォーマンス アナライザーによって収集された情報を使用して、パフォーマンスの問題を評価し、修復アクションを適用できます。
パフォーマンスの問題がある車両で診断とサービスを実行する方法と同様に、パフォーマンス アナライザーを使用すると、Microsoft Defender ウイルス対策のパフォーマンスを向上させることができます。
分析するオプションには、次のようなものがあります。
- スキャン時間に影響を与える上位パス
- スキャン時間に影響を与える上位のファイル
- スキャン時間に影響を与える上位のプロセス
- スキャン時間に影響を与える上位のファイル拡張子
- 組み合わせ – 例:
- 拡張子ごとに上位のファイル
- 拡張機能ごとの上位パス
- パスあたりの上位プロセス数
- ファイルあたりの上位スキャン数
- プロセスごとのファイルあたりの上位スキャン数
パフォーマンス アナライザーの実行
パフォーマンス アナライザーを実行するための大まかなプロセスには、次の手順が含まれます。
パフォーマンス アナライザーを実行して、エンドポイント上の Microsoft Defender ウイルス対策イベントのパフォーマンス記録を収集します。
注:
Microsoft-Antimalware-Engine
型の Microsoft Defender ウイルス対策イベントのパフォーマンスは、パフォーマンス アナライザーを介して記録されます。さまざまな記録レポートを使用してスキャン結果を分析します。
パフォーマンス アナライザーの使用
システム イベントの記録を開始するには、管理者モードで PowerShell を開き、次の手順を実行します。
次のコマンドを実行して、記録を開始します。
New-MpPerformanceRecording -RecordTo <recording.etl>
ここで、
-RecordTo
パラメーターは、トレース ファイルを保存する完全なパスの場所を指定します。 コマンドレットの詳細については、「 Microsoft Defender ウイルス対策コマンドレット」を参照してください。パフォーマンスに影響を与えると考えられるプロセスまたはサービスがある場合は、関連するタスクを実行して状況を再現します。
Enter キーを押して記録を停止して保存するか、Ctrl + C キーを押して記録を取り消します。
パフォーマンス アナライザーの
Get-MpPerformanceReport
パラメーターを使用して結果を分析します。 たとえば、コマンドGet-MpPerformanceReport -Path <recording.etl> -TopFiles 3 -TopScansPerFile 10
を実行すると、パフォーマンスに影響を与える上位 3 つのファイルの上位 10 個のスキャンの一覧がユーザーに提供されます。コマンド ライン パラメーターとオプションの詳細については、 New-MpPerformanceRecording と Get-MpPerformanceReport を参照してください。
注:
記録を実行するときに、"Windows パフォーマンス レコーダーが既に記録されているため、パフォーマンス記録を開始できません" というエラーが発生した場合は、次のコマンドを実行して、新しいコマンドを使用して既存のトレースを停止します: wpr -cancel -instancename MSFT_MpPerformanceRecording
。
パフォーマンス チューニング データと情報
クエリに基づいて、ユーザーはスキャン数、期間 (total/min/average/max/median)、パス、プロセス、およびスキャン理由のデータを表示できます。 次の図は、スキャンの影響を受ける上位 10 個のファイルの単純なクエリの出力例を示しています。
CSV と JSON へのエクスポートと変換
パフォーマンス アナライザーの結果は、CSV または JSON ファイルにエクスポートして変換することもできます。 この記事には、サンプル コードを使用した "エクスポート" と "変換" のプロセスについて説明する例が含まれています。
Defender バージョンの 4.18.2206.X
以降、ユーザーは[ SkipReason
] 列でスキャンスキップの理由情報を表示できます。 値は次のいずれかです。
- スキップされない
- 最適化 (通常はパフォーマンス上の理由による)
- ユーザーがスキップされました (通常、ユーザー セットの除外が原因)
CSV の場合
- エクスポートするには:
(Get-MpPerformanceReport -Path .\Repro-Install.etl -Topscans 1000).TopScans | Export-CSV -Path .\Repro-Install-Scans.csv -Encoding UTF8 -NoTypeInformation
- 変換するには:
(Get-MpPerformanceReport -Path .\Repro-Install.etl -Topscans 100).TopScans | ConvertTo-Csv -NoTypeInformation
JSON の場合
- 変換するには:
(Get-MpPerformanceReport -Path .\Repro-Install.etl -Topscans 1000).TopScans | ConvertTo-Json -Depth 1
他のデータ処理システムと共にエクスポートするためのマシン読み取り可能な出力を確保するには、Get-MpPerformanceReport
に -Raw
パラメーターを使用することをお勧めします。 詳細については、次のセクションを参照してください。
PowerShell リファレンス
Microsoft Defender ウイルス対策のパフォーマンスを調整するために使用される新しい PowerShell コマンドレットは 2 つあります。
New-MpPerformanceRecording
次のセクションでは、新しい PowerShell コマンドレット New-MpPerformanceRecording
のリファレンスについて説明します。 このコマンドレットは、Microsoft Defender ウイルス対策スキャンのパフォーマンス記録を収集します。
構文: New-MpPerformanceRecording
New-MpPerformanceRecording -RecordTo <String>
説明: New-MpPerformanceRecording
New-MpPerformanceRecording
コマンドレットは、Microsoft Defender ウイルス対策スキャンのパフォーマンス記録を収集します。 これらのパフォーマンス記録には、Microsoft-マルウェア対策エンジンと NT カーネル プロセス イベントが含まれており、 Get-MpPerformanceReport コマンドレットを使用して収集後に分析できます。
この New-MpPerformanceRecording
コマンドレットは、Microsoft Defender ウイルス対策のパフォーマンスの低下を引き起こす可能性がある問題のあるファイルに関する分析情報を提供します。 このツールは "現状のまま" で提供され、除外に関する提案を提供するものではありません。 除外により、エンドポイントの保護レベルが低下する可能性があります。 除外がある場合は、慎重に定義する必要があります。
パフォーマンス アナライザーの詳細については、「 Performance Analyzer のドキュメント」を参照してください。
重要
このコマンドレットには管理者特権が必要です。
例: New-MpPerformanceRecording
例 1: パフォーマンス記録を収集して保存する
New-MpPerformanceRecording -RecordTo .\Defender-scans.etl
コマンドは、パフォーマンス記録を収集し、指定されたパス ( .\Defender-scans.etl
) に保存します。
例 2: リモート PowerShell セッションのパフォーマンス記録を収集する
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
New-MpPerformanceRecording -RecordTo C:\LocalPathOnServer02\trace.etl -Session $s
コマンドは、(パラメーター Session の引数$sで指定された) Server02
のパフォーマンス記録を収集し、指定されたパス (Server02
のC:\LocalPathOnServer02\trace.etl
) に保存します。
パラメーター: New-MpPerformanceRecording
-RecordTo
Microsoft Defender マルウェア対策のパフォーマンス記録を保存する場所を指定します。
Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-セッション
Microsoft Defender ウイルス対策のパフォーマンス記録を作成して保存する PSSession
オブジェクトを指定します。 このコマンドを使用すると、 RecordTo
パラメーターはリモート コンピューター上のローカル パスを参照します。 Defender プラットフォーム バージョン 4.18.2201.10
以降で使用できます。
Type: PSSession[]
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
Get-MpPerformanceReport
次のセクションでは、 Get-MpPerformanceReport
PowerShell コマンドレットについて説明します。 Microsoft Defender ウイルス対策のパフォーマンス記録に関する分析とレポート。
構文: Get-MpPerformanceReport
Get-MpPerformanceReport [-Path] <String> [-TopFiles <Int32>] [-TopScansPerFile <Int32>] [-TopProcessesPerFile
<Int32>] [-TopScansPerProcessPerFile <Int32>] [-TopPaths <Int32>] [-TopPathsDepth <Int32>] [-TopScansPerPath
<Int32>] [-TopFilesPerPath <Int32>] [-TopScansPerFilePerPath <Int32>] [-TopExtensionsPerPath <Int32>]
[-TopScansPerExtensionPerPath <Int32>] [-TopProcessesPerPath <Int32>] [-TopScansPerProcessPerPath <Int32>]
[-TopExtensions <Int32>] [-TopScansPerExtension <Int32>] [-TopPathsPerExtension <Int32>]
[-TopScansPerPathPerExtension <Int32>] [-TopFilesPerExtension <Int32>] [-TopScansPerFilePerExtension <Int32>]
[-TopProcessesPerExtension <Int32>] [-TopScansPerProcessPerExtension <Int32>] [-TopProcesses <Int32>]
[-TopScansPerProcess <Int32>] [-TopFilesPerProcess <Int32>] [-TopScansPerFilePerProcess <Int32>]
[-TopExtensionsPerProcess <Int32>] [-TopScansPerExtensionPerProcess <Int32>] [-TopPathsPerProcess <Int32>]
[-TopScansPerPathPerProcess <Int32>] [-TopScans <Int32>] [-MinDuration <String>] [-MinStartTime <DateTime>]
[-MinEndTime <DateTime>] [-MaxStartTime <DateTime>] [-MaxEndTime <DateTime>] [-Overview] [-Raw]
[<CommonParameters>]
説明: Get-MpPerformanceReport
Get-MpPerformanceReport
コマンドレットは、以前に収集した Microsoft Defender ウイルス対策のパフォーマンス記録 (New-MpPerformanceRecording) を分析し、Microsoft Defender ウイルス対策スキャンに最も大きな影響を与えるファイル パス、ファイル拡張子、プロセスを報告します。
パフォーマンス アナライザーは、Microsoft Defender ウイルス対策のパフォーマンスの低下を引き起こす可能性のある問題のあるファイルに関する分析情報を提供します。 このツールは "現状のまま" で提供され、除外に関する提案を提供するものではありません。 除外により、エンドポイントの保護レベルが低下する可能性があります。 除外がある場合は、慎重に定義する必要があります。
パフォーマンス アナライザーの詳細については、「 Performance Analyzer のドキュメント」を参照してください。
サポートされている OS バージョン:
Windows バージョン 10 以降。
注:
この機能は、プラットフォーム バージョン 4.18.2108.X
以降で使用できます。
例: Get-MpPerformanceReport
例 1: 単一クエリ
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopScans 20
例 2: 複数のクエリ
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopFiles 10 -TopExtensions 10 -TopProcesses 10 -TopScans 10
例 3: 入れ子になったクエリ
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopProcesses 10 -TopExtensionsPerProcess 3 -TopScansPerExtensionPerProcess 3
例 4: -MinDuration パラメーターの使用
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopScans 100 -MinDuration 100ms
例 5: -Raw パラメーターの使用
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopFiles 10 -TopExtensions 10 -TopProcesses 10 -TopScans 10 -Raw | ConvertTo-Json
コマンドで -Raw
を使用すると、出力をマシンが読み取り可能で、JSON などのシリアル化形式にすぐに変換できる必要があることを指定します。
パラメーター: Get-MpPerformanceReport
-TopPaths
上位パス レポートを要求し、出力する上位パスの数を期間で並べ替えて指定します。 パスとディレクトリに基づいてスキャンを集計します。 ユーザーは、各レベルに表示するディレクトリの数と選択範囲の深さを指定できます。
- Type: Int32
- Position: Named
- Default value: None
- Accept pipeline input: False
- Accept wildcard characters: False
-TopPathsDepth
集計されたパスの結果をグループ化して表示するために使用される再帰的な深さを指定します。 たとえば、 C:\
は深さ 1 に対応し、 C:\Users\Foo
は深さ 3 に対応します。
このフラグは、他のすべてのトップ パス オプションと共に使用できます。 存在しない場合、既定値は 3 と見なされます。 値を 0 にすることはできません。
- Type: Int32
- Position: Named
- Default value: 3
- Accept pipeline input: False
- Accept wildcard characters: False
flag | definition |
---|---|
-TopScansPerPath |
各上位パスに対して指定する上位スキャンの数を指定します。 |
-TopFilesPerPath |
各トップ パスに指定する上位ファイルの数を指定します。 |
-TopScansPerFilePerPath |
上位パスごとに上位ファイルごとに出力する上位スキャンの数を、"Duration" で並べ替えて指定します。 |
-TopExtensionsPerPath |
上位パスごとに出力する上位拡張機能の数を指定します |
-TopScansPerExtensionPerPath |
各トップ パスの上位拡張機能ごとに出力する上位スキャンの数を指定します |
-TopProcessesPerPath |
上位パスごとに出力する上位プロセスの数を指定します |
-TopScansPerProcessPerPath |
上位パスごとに上位プロセスごとに出力する上位スキャンの数を指定します |
-TopPathsPerExtension |
上位の拡張機能ごとに出力する上位パスの数を指定します |
-TopScansPerPathPerExtension |
上位の拡張子ごとに上位パスごとに出力する上位スキャンの数を指定します |
-TopPathsPerProcess |
上位プロセスごとに出力する上位パスの数を指定します |
-TopScansPerPathPerProcess |
各上位プロセスの上位パスごとに出力する上位スキャンの数を指定します |
-MinDuration
レポートに含まれるファイル、拡張機能、プロセスのスキャンまたはスキャンの合計期間の最小期間を指定します。は、 0.1234567sec
、 0.1234ms
、 0.1us
、または有効な TimeSpan などの値を受け取ります。
Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-パス
1 つ以上の場所へのパスまたはパスを指定します。
Type: String
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: False
-生
パフォーマンス記録の出力をマシンで読み取り可能で、JSON などのシリアル化形式にすぐに変換できるようにする必要があることを指定します (たとえば、Convert-to-JSON コマンドを使用)。 この構成は、他のデータ処理システムとのバッチ処理に関心があるユーザーに推奨されます。
Type: <SwitchParameter>
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-TopExtensions
出力する上位の拡張機能の数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopExtensionsPerProcess
各上位プロセスに出力する上位の拡張機能の数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopFiles
上位ファイル レポートを要求し、出力する上位ファイルの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopFilesPerExtension
上位の拡張子ごとに出力する上位ファイルの数を、期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopFilesPerProcess
各上位プロセスに出力する上位ファイルの数を、期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopProcesses
上位プロセス レポートを要求し、出力する上位プロセスの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopProcessesPerExtension
上位の拡張機能ごとに出力する上位プロセスの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopProcessesPerFile
上位ファイルごとに出力する上位プロセスの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScans
上位スキャン レポートを要求し、出力する上位スキャンの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerExtension
上位の拡張機能ごとに出力する上位スキャンの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerExtensionPerProcess
各上位プロセスの上位拡張機能ごとに出力する上位スキャンの数を、期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerFile
各上位ファイルに対して出力する上位スキャンの数を、期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerFilePerExtension
上位の拡張子ごとに上位ファイルごとに出力する上位スキャンの数を、期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerFilePerProcess
各上位プロセスの上位ファイルごとの出力の上位スキャンの数を指定します。期間で並べ替えられます。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerProcess
上位プロセス レポートの上位プロセスごとに出力する上位スキャンの数を期間で並べ替えて指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerProcessPerExtension
各上位の拡張機能の各上位プロセスの出力の上位スキャンの数を指定します。期間で並べ替えられます。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerProcessPerFile
各上位ファイルの各上位プロセスの出力に対する上位スキャンの数を、期間で並べ替え、指定します。
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
ヒント
さらに多くの情報を得るには、 Tech Community 内の Microsoft Security コミュニティ (Microsoft Defender for Endpoint Tech Community) にご参加ください。