适用于 Microsoft Defender 防病毒的性能分析器
适用对象
- Microsoft Defender for Endpoint 计划 1
- Microsoft Defender for Endpoint 计划 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 Performance Toolkit) 。 下载并安装 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 类型的 Defender 防病毒事件
Microsoft-Antimalware-Engine
的性能通过性能分析器进行记录。使用不同的记录报告分析扫描结果。
使用性能分析器
若要开始记录系统事件,请在管理员模式下打开 PowerShell 并执行以下步骤:
运行以下命令以开始录制:
New-MpPerformanceRecording -RecordTo <recording.etl>
其中
-RecordTo
,参数指定保存跟踪文件的完整路径位置。 有关更多 cmdlet 信息,请参阅 Microsoft Defender 防病毒 cmdlet。如果认为存在影响性能的进程或服务,请通过执行相关任务来重现情况。
按 Enter 可停止并保存录制,按 Ctrl+C 可取消录制。
使用性能分析器的
Get-MpPerformanceReport
参数分析结果。 例如,在执行 命令Get-MpPerformanceReport -Path <recording.etl> -TopFiles 3 -TopScansPerFile 10
时,会向用户提供影响性能的前三个文件的十大扫描列表。有关命令行参数和选项的详细信息,请参阅 New-MpPerformanceRecording 和 Get-MpPerformanceReport。
注意
运行录制时,如果收到错误“无法启动性能录制,因为 Windows 性能录制器已在录制”,请运行以下命令,使用新命令停止现有跟踪: wpr -cancel -instancename MSFT_MpPerformanceRecording
。
性能优化数据和信息
根据查询,用户能够查看扫描计数、持续时间 (total/min/average/max/median/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 参考
有两个新的 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.etl
上 Server02
。
参数: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.1234567sec
0.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 技术社区。