共用方式為


適用於 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 Performance Recorder 已經錄製而無法啟動效能錄製」錯誤,請執行下列命令,以使用新的命令停止現有的追蹤: wpr -cancel -instancename MSFT_MpPerformanceRecording

效能微調數據和資訊

根據查詢,用戶能夠檢視掃描計數、持續時間 (總計/最小/平均/最大/中位數) 、路徑、進程和掃描原因的數據。 下圖顯示掃描影響前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

若要確保機器可讀取的輸出可與其他數據處理系統一起匯出,建議使用 -Raw 的 參數。Get-MpPerformanceReport 如需詳細資訊,請參閱下列各節。

PowerShell 參考

有兩個新的 PowerShell Cmdlet 可用來微調 Microsoft Defender 防病毒軟體的效能:

New-MpPerformanceRecording

下一節描述新 PowerShell Cmdlet New-MpPerformanceRecording的參考。 此 Cmdlet 會收集 Microsoft Defender 防病毒軟體掃描的效能記錄。

語法:New-MpPerformanceRecording

New-MpPerformanceRecording -RecordTo <String>

描述:New-MpPerformanceRecording

Cmdlet New-MpPerformanceRecording 會收集 Microsoft Defender 防病毒軟體掃描的效能記錄。 這些效能記錄包含Microsoft反惡意代碼引擎和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

命令會收集 (上的 Server02 效能記錄,如參數 Session) 的自變數$s所指定,並將它儲存至指定的路徑: C:\LocalPathOnServer02\trace.etl 在 上 Server02

參數:New-MpPerformanceRecording

-RecordTo

指定儲存 Microsoft Defender Antimalware 效能記錄的位置。

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

Get-MpPerformanceReport Cmdlet 會分析先前收集的 Microsoft Defender 防病毒軟體效能記錄 (New-MpPerformanceRecording) ,並報告對 Microsoft Defender 防病毒軟體掃描造成最大影響的檔案路徑、擴展名和程式。

效能分析器可讓您深入瞭解可能會導致 Microsoft Defender 防病毒軟體效能降低的問題檔案。 此工具是以「原樣」提供,不是為了提供排除項目的建議。 排除專案可以降低端點的保護層級。 如果有的話,應該謹慎定義排除專案。

如需效能分析器的詳細資訊,請參閱 效能分析器 檔。

支援的作業系統版本

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
定義
-TopScansPerPath 指定要為每個頂端路徑指定的頂端掃描數目。
-TopFilesPerPath 指定要為每個頂端路徑指定的頂端檔案數目。
-TopScansPerFilePerPath 指定每個最上層路徑的每個頂端檔案要輸出的頂端掃描數目,依「持續時間」排序
-TopExtensionsPerPath 指定每個頂端路徑要輸出的頂端延伸模組數目
-TopScansPerExtensionPerPath 指定每個頂端路徑每個頂端延伸模組要輸出的頂端掃描數目
-TopProcessesPerPath 指定每個最上層路徑要輸出的頂端進程數目
-TopScansPerProcessPerPath 指定每個最上層路徑的每個最上層進程要輸出的頂端掃描數目
-TopPathsPerExtension 指定每個頂端延伸模組要輸出的頂端路徑數目
-TopScansPerPathPerExtension 指定每個頂端延伸模組的每個最上層路徑要輸出的頂端掃描數目
-TopPathsPerProcess 指定每個最上層進程要輸出的頂端路徑數目
-TopScansPerPathPerProcess 指定每個最上層進程的每個最上層路徑要輸出的頂端掃描數目
-MinDuration

指定報表中所包含檔案、擴充功能和進程的任何掃描或總掃描持續時間的最小持續時間;接受、0.1234ms0.1us或有效 TimeSpan 等0.1234567sec值。

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

指定一或多個位置的路徑。

Type: String
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: False
-生

指定效能記錄的輸出應該是機器可讀取且可立即轉換成串行化格式,例如透過轉換成 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

指定依持續時間排序的 Top Process 報表中每個最上層進程要輸出的頂端掃描數目。

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技術社群。