Microsoft Defender防毒軟體的效能分析器

適用於

平台

  • Windows

什麼是Microsoft Defender防毒軟體效能分析器?

如果執行防毒軟體Microsoft Defender電腦發生效能問題,您可以使用效能分析器來改善Microsoft Defender防毒軟體的效能。 Windows 10、Windows 11 和 Windows Server 中Microsoft Defender防毒軟體的效能分析器是 PowerShell 命令列工具,可協助您判斷在防毒軟體掃描期間,可能會造成個別端點效能問題的檔案、副檔名和程式。 您可以使用效能分析器所收集的資訊來評估效能問題並套用補救動作。

類似于機制在發生效能問題的車輛上執行診斷和服務的方式,效能分析器可協助您改善 Defender 防毒軟體效能。

Microsoft Defender防毒軟體的概念性效能分析器影像。此圖表與下列相關:Microsoft Defender效能分析器、defender 效能分析器、Get-MpPerformanceRepor、New-MpPerformanceRecording、windows defender、microsoft defender、microsoft windows 10、Microsoft Defender 防毒軟體、微軟體 Windows 11、Windows 防毒軟體、Microsoft 防毒軟體、windows Defender 防毒軟體、Windows 10防毒軟體、Microsoft Windows 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 時,會為使用者提供影響效能的前 3 個檔案前 10 個掃描清單。

如需命令列參數和選項的詳細資訊,請參閱 New-MpPerformanceRecordingGet-MpPerformanceReport

注意事項

執行錄製時,如果您收到錯誤「無法啟動效能錄製,因為 Windows Performance Recorder 已錄製」,請執行下列命令,以使用新的命令停止現有的追蹤: wpr -cancel -instancename MSFT_MpPerformanceRecording

效能微調資料和資訊

根據查詢,使用者將能夠檢視掃描計數、持續時間 (總計/最小/平均/最大/中位數) 、路徑、進程和 掃描原因的資料。 下圖顯示掃描影響前 10 個檔案之簡單查詢的範例輸出。

基本 TopFiles 查詢的範例輸出

其他功能:匯出和轉換成 CSV 和 JSON

效能分析器的結果也可以匯出並轉換成 CSV 或 JSON 檔案。 如需透過範例程式碼描述「匯出」和「轉換」程式的範例,請參閱下方。

從 Defender 4.18.2206.X 版開始,使用者將能夠在 [SkipReason] 資料行下檢視掃描略過原因資訊。 可能的值為:

  1. 未略過
  2. 優化 (通常是因為效能原因)
  3. 使用者略過 (通常是因為使用者設定排除)

針對 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 參數。 如需詳細資訊,請參閱下方

需求

Microsoft Defender防毒軟體效能分析器具有下列必要條件:

  • 支援的 Windows 版本:Windows 10、Windows 11和Windows Server 2016和更新版本
  • 平臺版本:4.18.2108.7+
  • PowerShell 版本:PowerShell 5.1 版、PowerShell ISE、遠端 PowerShell (4.18.2201.10+) 、PowerShell 7.x (4.18.2201.10+)

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-Antimalware-Engine 和 NT 核心進程事件,而且可以在使用 Get-MpPerformanceReport Cmdlet 收集之後進行分析。

New-MpPerformanceRecording Cmdlet 可讓您深入瞭解可能導致防毒軟體效能降低的問題檔案Microsoft Defender。 此工具是以「AS IS」提供,並不適合提供排除專案的建議。 排除專案可以降低端點的保護層級。 如果有的話,應該謹慎定義排除專案。

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

重要事項

此 Cmdlet 需要提高的系統管理員許可權。

支援的作業系統版本

Windows 版本 10 和更新版本。

注意事項

此功能從平臺 4.18.2108.X 版和更新版本開始提供。

範例: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所指定,並將它儲存到指定的路徑: Server02 上的 C:\LocalPathOnServer02\trace.etl

範例 3:在非互動式模式中收集效能錄製
New-MpPerformanceRecording -RecordTo .\Defender-scans.etl -Seconds 60

上述命令會收集以參數 -Seconds 指定的秒數為單位的持續時間效能記錄。 建議使用者進行不需要互動或提示的批次集合。

參數: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
-秒

指定以秒為單位的效能錄製持續時間。 建議使用者進行不需要互動或提示的批次集合。

Type: Int32
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False

Get-MpPerformanceReport

下一節說明 Get-MpPerformanceReport PowerShell Cmdlet。 分析和報告Microsoft Defender防毒軟體效能記錄。

語法:Get-MpPerformanceReport

Get-MpPerformanceReport    [-Path] <String>
	[-TopScans [<Int32>]]
	[-TopPaths [<Int32>] [-TopPathsDepth [<Int32>]]]
			[-TopScansPerPath [<Int32>]]
			[-TopFilesPerPath [<Int32>]
					[-TopScansPerFilePerPath [<Int32>]]
					]
			[-TopExtensionsPerPath [<Int32>]
					[-TopScansPerExtensionPerPath [<Int32>]]
					]
			[-TopProcessesPerPath [<Int32>]
					[-TopScansPerProcessPerPath [<Int32>]]
					]
			]
	[-TopFiles [<Int32>]
			[-TopScansPerFile [<Int32>]]
			[-TopProcessesPerFile [<Int32>]
					[-TopScansPerProcessPerFile [<Int32>]]
					]
			]
	[-TopExtensions [<Int32>]
			[-TopScansPerExtension [<Int32>]
			[-TopPathsPerExtension [<Int32>] [-TopPathsDepth [<Int32>]]
					[-TopScansPerPathPerExtension [<Int32>]]
					]
			[-TopProcessesPerExtension [<Int32>]
					[-TopScansPerProcessPerExtension [<Int32>]]
					]
			[-TopFilesPerExtension [<Int32>]
					[-TopScansPerFilePerExtension [<Int32>]]
					]
			]
	[-TopProcesses [<Int32>]
			[-TopScansPerProcess [<Int32>]]
			[-TopExtensionsPerProcess [<Int32>]
					[-TopScansPerExtensionPerProcess [<Int32>]]
					]
			[-TopPathsPerProcess [<Int32>] [-TopPathsDepth [<Int32>]]
					[-TopScansPerPathPerProcess [<Int32>]]
					]
			[-TopFilesPerProcess [<Int32>]
					[-TopScansPerFilePerProcess [<Int32>]]
					]
			]
	[-MinDuration <String>]
	[-Raw]

描述:Get-MpPerformanceReport

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

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

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

支援的作業系統版本

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

要求最上層路徑報表,並指定要輸出的熱門路徑數目,依「持續時間」排序。 根據掃描的路徑和目錄匯總掃描。 使用者可以指定每個層級應該顯示多少目錄,以及選取範圍的深度。

  • 類型:Int32
  • 位置:具名
  • 預設值:無
  • 接受管線輸入:False
  • 接受萬用字元:False
-TopPathsDepth

指定將用來分組和顯示匯總路徑結果的遞迴深度。 例如,「C:」 對應至 1 的深度,「C:\Users\Foo」 對應至 3 的深度。

此旗標可以隨附所有其他 [最上層路徑] 選項。 如果遺漏,則會假設預設值為 3。 值不能是 0。

  • 類型:Int32
  • 位置:具名
  • 預設值:3
  • 接受管線輸入:False
  • 接受萬用字元:False
國旗 定義
-TopScansPerPath 指定如何為每個頂端路徑指定最上層掃描。
-TopFilesPerPath 指定要如何為每個頂端路徑指定最上層檔案。
-TopScansPerFilePerPath 指定每個最上層路徑的每個頂端檔案要輸出的頂端掃描數目,依「持續時間」排序
-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
-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

指定在 「前置處理常式」報表中,每一個最上層進程要輸出的頂端掃描數目,依「持續時間」排序。

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

其他資源

如果您要尋找其他平臺的防毒軟體相關資訊,請參閱: