适用于 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 类型的 Defender 防病毒事件 Microsoft-Antimalware-Engine 的性能通过性能分析器进行记录。

  2. 使用不同的记录报告分析扫描结果。

使用性能分析器

若要开始记录系统事件,请在管理员模式下打开 PowerShell 并执行以下步骤:

  1. 运行以下命令以开始录制:

    New-MpPerformanceRecording -RecordTo <recording.etl>
    

    其中 -RecordTo ,参数指定保存跟踪文件的完整路径位置。 有关更多 cmdlet 信息,请参阅 Microsoft Defender 防病毒 cmdlet

  2. 如果认为存在影响性能的进程或服务,请通过执行相关任务来重现情况。

  3. Enter 可停止并保存录制,按 Ctrl+C 可取消录制。

  4. 使用性能分析器的 Get-MpPerformanceReport 参数分析结果。 例如,在执行 命令 Get-MpPerformanceReport -Path <recording.etl> -TopFiles 3 -TopScansPerFile 10时,会向用户提供影响性能的前三个文件的十大扫描列表。

    有关命令行参数和选项的详细信息,请参阅 New-MpPerformanceRecordingGet-MpPerformanceReport

注意

运行录制时,如果收到错误“无法启动性能录制,因为 Windows 性能录制器已在录制”,请运行以下命令,使用新命令停止现有跟踪: wpr -cancel -instancename MSFT_MpPerformanceRecording

性能优化数据和信息

根据查询,用户能够查看扫描计数、持续时间 (total/min/average/max/median/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 参考

有两个新的 PowerShell cmdlet 用于优化 Microsoft Defender 防病毒的性能:

New-MpPerformanceRecording

以下部分介绍新的 PowerShell cmdlet New-MpPerformanceRecording的参考。 此 cmdlet 收集 Microsoft Defender 防病毒扫描的性能记录。

语法:New-MpPerformanceRecording

New-MpPerformanceRecording -RecordTo <String>

说明:New-MpPerformanceRecording

New-MpPerformanceRecording cmdlet 收集 Microsoft Defender 防病毒扫描的性能记录。 这些性能记录包含 Microsoft-Antimalware-Engine 和 NT 内核进程事件,可以在收集后使用 Get-MpPerformanceReport cmdlet 进行分析。

New-MpPerformanceRecording cmdlet 可深入了解可能导致 Microsoft Defender 防病毒性能下降的问题文件。 此工具按“原样”提供,不打算提供有关排除项的建议。 排除可能会降低终结点的保护级别。 应谨慎定义排除项(如果有)。

有关性能分析器的详细信息,请参阅 性能分析器 文档。

重要

此 cmdlet 需要提升的管理员权限。

示例: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

命令收集参数会话) 的参数$s指定的 (性能记录 Server02 ,并将其保存到指定的路径: C:\LocalPathOnServer02\trace.etlServer02

参数:New-MpPerformanceRecording

-RecordTo

指定保存Microsoft Defender 反恶意软件性能记录的位置。

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-会期

指定要 PSSession 在其中创建和保存 Microsoft Defender 防病毒性能记录的对象。 使用此命令时, 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 cmdlet。 分析和报告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

cmdlet Get-MpPerformanceReport 分析以前收集的 Microsoft Defender 防病毒性能记录 (New-MpPerformanceRecording) ,并报告对 Microsoft Defender 防病毒扫描造成最大影响的文件路径、文件扩展名和进程。

性能分析器可深入了解可能导致 Microsoft Defender 防病毒性能下降的问题文件。 此工具按“原样”提供,不打算提供有关排除项的建议。 排除可能会降低终结点的保护级别。 应谨慎定义排除项(如果有)。

有关性能分析器的详细信息,请参阅 性能分析器 文档。

支持的 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。

此标志可以附带所有其他“Top Path”选项。 如果缺少,则假定默认值为 3。 该值不能为 0。

- Type: Int32
- Position: Named
- Default value: 3
- Accept pipeline input: False
- Accept wildcard characters: False
flag 定义
-TopScansPerPath 指定要为每个顶部路径指定的顶部扫描数。
-TopFilesPerPath 指定要为每个顶部路径指定的顶部文件数。
-TopScansPerFilePerPath 指定要为每个顶部路径的每个顶级文件输出的顶级扫描数(按“持续时间”排序)
-TopExtensionsPerPath 指定要为每个顶部路径输出的顶级扩展数
-TopScansPerExtensionPerPath 指定要为每个顶部路径的每个顶部扩展输出的顶部扫描数
-TopProcessesPerPath 指定要为每个顶部路径输出的顶级进程数
-TopScansPerProcessPerPath 指定要为每个顶部路径的每个顶级进程输出的顶级扫描数
-TopPathsPerExtension 指定要为每个顶部扩展输出的顶部路径数
-TopScansPerPathPerExtension 指定要为每个顶部扩展的每个顶部路径输出的顶级扫描数
-TopPathsPerProcess 指定要为每个顶级进程输出的顶部路径数
-TopScansPerPathPerProcess 指定要为每个顶级进程的每个顶部路径输出的顶级扫描数
-MinDuration

指定报告中包含的文件、扩展和进程的任意扫描的最短持续时间或总扫描持续时间;接受 、、 0.1us或有效的 TimeSpan 等0.1234567sec0.1234ms值。

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-路径

指定一个或多个位置的路径。

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

提示

想要了解更多信息? 在技术社区中与 Microsoft 安全社区互动: Microsoft Defender for Endpoint 技术社区