次の方法で共有


Microsoft Defender ウイルス対策用のパフォーマンス アナライザー

適用対象

プラットフォーム

  • Windows

要件

Microsoft Defender ウイルス対策パフォーマンス アナライザーには、次の前提条件があります。

  • サポートされている Windows バージョン:
  • プラットフォーム バージョン: 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 ウイルス対策の概念パフォーマンス アナライザー イメージ。

分析するオプションには、次のようなものがあります。

  • スキャン時間に影響を与える上位パス
  • スキャン時間に影響を与える上位のファイル
  • スキャン時間に影響を与える上位のプロセス
  • スキャン時間に影響を与える上位のファイル拡張子
  • 組み合わせ – 例:
    • 拡張子ごとに上位のファイル
    • 拡張機能ごとの上位パス
    • パスあたりの上位プロセス数
    • ファイルあたりの上位スキャン数
    • プロセスごとのファイルあたりの上位スキャン数

パフォーマンス アナライザーの実行

パフォーマンス アナライザーを実行するための大まかなプロセスには、次の手順が含まれます。

  1. パフォーマンス アナライザーを実行して、エンドポイント上の Microsoft Defender ウイルス対策イベントのパフォーマンス記録を収集します。

    注:

    Microsoft-Antimalware-Engine型の Microsoft Defender ウイルス対策イベントのパフォーマンスは、パフォーマンス アナライザーを介して記録されます。

  2. さまざまな記録レポートを使用してスキャン結果を分析します。

パフォーマンス アナライザーの使用

システム イベントの記録を開始するには、管理者モードで PowerShell を開き、次の手順を実行します。

  1. 次のコマンドを実行して、記録を開始します。

    New-MpPerformanceRecording -RecordTo <recording.etl>
    

    ここで、 -RecordTo パラメーターは、トレース ファイルを保存する完全なパスの場所を指定します。 コマンドレットの詳細については、「 Microsoft Defender ウイルス対策コマンドレット」を参照してください。

  2. パフォーマンスに影響を与えると考えられるプロセスまたはサービスがある場合は、関連するタスクを実行して状況を再現します。

  3. Enter キーを押して記録を停止して保存するか、Ctrl + C キーを押して記録を取り消します。

  4. パフォーマンス アナライザーの Get-MpPerformanceReport パラメーターを使用して結果を分析します。 たとえば、コマンド Get-MpPerformanceReport -Path <recording.etl> -TopFiles 3 -TopScansPerFile 10を実行すると、パフォーマンスに影響を与える上位 3 つのファイルの上位 10 個のスキャンの一覧がユーザーに提供されます。

    コマンド ライン パラメーターとオプションの詳細については、 New-MpPerformanceRecordingGet-MpPerformanceReport を参照してください。

注:

記録を実行するときに、"Windows パフォーマンス レコーダーが既に記録されているため、パフォーマンス記録を開始できません" というエラーが発生した場合は、次のコマンドを実行して、新しいコマンドを使用して既存のトレースを停止します: wpr -cancel -instancename MSFT_MpPerformanceRecording

パフォーマンス チューニング データと情報

クエリに基づいて、ユーザーはスキャン数、期間 (total/min/average/max/median)、パス、プロセス、およびスキャン理由のデータを表示できます。 次の図は、スキャンの影響を受ける上位 10 個のファイルの単純なクエリの出力例を示しています。

基本的な TopFiles クエリの出力例

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のパフォーマンス記録を収集し、指定されたパス (Server02C:\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.1234567sec0.1234ms0.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) にご参加ください。