PowerShell 技能连载 - Windows Defender 管理

适用于 PowerShell 5.1 及以上版本

在企业终端安全管理中,Windows Defender 已从简单的防病毒工具演变为完整的端点保护平台(EPP)。随着 Microsoft Defender for Endpoint 的持续升级,管理员需要一种可重复、可自动化的方式来统一部署安全策略。PowerShell 的 Defender 模块为此提供了全面的命令行支持。

传统上,管理员依赖组策略(GPO)或 Microsoft Endpoint Manager(Intune)来配置 Defender。但在混合环境中——尤其是需要快速响应安全事件、批量修复配置偏移或在新上线设备上应用基线时——PowerShell 脚本的灵活性和即时执行能力是 GUI 工具无法替代的。结合 DSC(Desired State Configuration)或 Ansible 等配置管理工具,还能实现持续合规。

本文将从三个维度介绍如何通过 PowerShell 管理 Windows Defender:基础配置与扫描管理、排除规则与高级策略、威胁响应与合规报告。每个部分都包含可直接用于生产环境的脚本示例。

Defender 配置与扫描管理

通过 Set-MpPreferenceGet-MpPreference 可以查看和修改 Defender 的核心配置。以下脚本展示了如何读取当前偏好设置、应用安全基线配置,以及触发不同类型的扫描。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 获取当前 Defender 偏好配置
$pref = Get-MpPreference
Write-Host "当前实时保护状态: $(Get-MpComputerStatus | Select-Object -ExpandProperty RealTimeProtectionEnabled)"
Write-Host "扫描计划: $($pref.ScanScheduleDay)"
Write-Host "快速扫描时间: $($pref.ScanScheduleTime)"

# 应用安全基线配置
$baselineParams = @{
DisableRealtimeMonitoring = $false
DisableBehaviorMonitoring = $false
DisableBlockAtFirstSeen = $false
DisableIOAVProtection = $false
DisableScriptScanning = $false
EnableNetworkProtection = 'Enabled'
EnableFileHashComputation = $true
PUAProtection = 'Enabled'
ScanScheduleDay = 0 # 每天扫描
ScanScheduleTime = 120 # 凌晨 02:00
ScanScheduleQuickScanTime = 720 # 中午 12:00
CheckForSignaturesBeforeRunningScan = $true
SignatureUpdateInterval = 4 # 每 4 小时更新一次
}
Set-MpPreference @baselineParams
Write-Host "安全基线配置已应用"

# 触发快速扫描
Write-Host "`n开始快速扫描..."
Start-MpScan -ScanType QuickScan

# 触发自定义路径扫描(针对高风险目录)
$highRiskPaths = @(
"$env:USERPROFILE\Downloads",
"$env:TEMP",
"$env:PUBLIC"
)
foreach ($path in $highRiskPaths) {
if (Test-Path $path) {
Write-Host "扫描目录: $path"
Start-MpScan -ScanType CustomScan -ScanPath $path
}
}

# 查看扫描历史记录
$scanHistory = Get-MpThreatDetection | Select-Object -First 10
$scanHistory | Format-Table -Property `
@{N='检测时间';E={$_.InitialDetectionTime}},
@{N='威胁名称';E={$_.ThreatName}},
@{N='资源';E={$_.Resources -join ', '}},
@{N='操作';E={$_.ActionSuccess}} -AutoSize

执行结果示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
当前实时保护状态: True
扫描计划: 0
快速扫描时间: 720

安全基线配置已应用

开始快速扫描...

扫描目录: C:\Users\admin\Downloads
扫描目录: C:\Users\admin\AppData\Local\Temp
扫描目录: C:\Users\Public

检测时间 威胁名称 资源 操作
---------- ---------- ---- ----
2026/01/27 14:23:01 Trojan:Win32/Emotet.RPX!MTB C:\Users\admin\Downloads\report.exe True
2026/01/27 03:12:45 Adware:Win32/InstallCore C:\Temp\setup.exe True
2026/01/26 18:45:20 PUA:Win32/ByteFence C:\Program Files\ByteFence\... True

排除规则与高级策略

在企业环境中,某些业务应用程序会触发误报,需要配置排除规则。同时,攻击面减少(ASR)规则是现代 Defender 防御体系的重要组成部分。以下脚本展示了如何管理排除项和 ASR 规则。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 查看当前排除规则
$currentExclusions = Get-MpPreference
Write-Host "当前路径排除:"
$currentExclusions.ExclusionPath | ForEach-Object { Write-Host " - $_" }
Write-Host "当前进程排除:"
$currentExclusions.ExclusionProcess | ForEach-Object { Write-Host " - $_" }

# 配置路径排除(仅对已验证可信的业务目录)
$exclusionPaths = @(
'D:\BusinessApps\CoreERP',
'E:\DataWarehouse\Bin'
)
foreach ($path in $exclusionPaths) {
if (Test-Path $path) {
Add-MpPreference -ExclusionPath $path
Write-Host "已添加路径排除: $path"
} else {
Write-Warning "路径不存在,跳过排除: $path"
}
}

# 配置进程排除
$exclusionProcesses = @(
'erpservice.exe',
'dataworker.exe'
)
foreach ($proc in $exclusionProcesses) {
Add-MpPreference -ExclusionProcess $proc
Write-Host "已添加进程排除: $proc"
}

# 配置攻击面减少(ASR)规则
$asrRules = @{
# 阻止从 Windows 本地安全机构子系统 (lsass.exe) 窃取凭据
'9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' = 'Enabled'
# 阻止 Office 应用程序创建可执行内容
'3b576869-a4ec-4529-8536-b80a7769e899' = 'Enabled'
# 阻止 JavaScript/VBScript 启动下载的可执行内容
'd3e037e1-3eb8-44c8-a917-57927947596d' = 'Enabled'
# 阻止通过 WMI 事件订阅进行持久化
'e6db77e5-3df2-4cf1-b95a-636979351e5b' = 'AuditMode'
# 配置针对勒索软件的高级保护
'c1db55ab-c21a-4637-bb3f-a8683d4c58c4' = 'Enabled'
}
foreach ($ruleId in $asrRules.Keys) {
Add-MpPreference -AttackSurfaceReductionRules_Ids $ruleId `
-AttackSurfaceReductionRules_Actions $asrRules[$ruleId]
$actionLabel = if ($asrRules[$ruleId] -eq 'AuditMode') { '审计模式' } else { '启用' }
Write-Host "ASR 规则 $ruleId -> $actionLabel"
}

# 验证 ASR 规则配置
$pref = Get-MpPreference
Write-Host "`n已配置 $(($pref.AttackSurfaceReductionRules_Ids).Count) 条 ASR 规则"

执行结果示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
当前路径排除:
- D:\BusinessApps\CoreERP
- E:\DataWarehouse\Bin
当前进程排除:
- erpservice.exe
- dataworker.exe
已添加路径排除: D:\BusinessApps\CoreERP
已添加路径排除: E:\DataWarehouse\Bin
已添加进程排除: erpservice.exe
已添加进程排除: dataworker.exe
ASR 规则 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 -> 启用
ASR 规则 3b576869-a4ec-4529-8536-b80a7769e899 -> 启用
ASR 规则 d3e037e1-3eb8-44c8-a917-57927947596d -> 启用
ASR 规则 e6db77e5-3df2-4cf1-b95a-636979351e5b -> 审计模式
ASR 规则 c1db55ab-c21a-4637-bb3f-a8683d4c58c4 -> 启用

已配置 5 条 ASR 规则

威胁响应与合规报告

当安全事件发生时,快速查询威胁状态、执行隔离或恢复操作至关重要。以下脚本展示了如何构建一套威胁响应与合规检查的工作流。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 查询当前活跃威胁
$activeThreats = Get-MpThreat
if ($activeThreats) {
Write-Host "发现 $($activeThreats.Count) 个活跃威胁:" -ForegroundColor Red
$activeThreats | Format-Table -Property `
@{N='威胁ID';E={$_.ThreatID}},
@{N='名称';E={$_.ThreatName}},
@{N='严重级别';E={$_.SeverityID}},
@{N='类别';E={$_.CategoryID}},
@{N='状态';E={$_.ThreatStatus}} -AutoSize
} else {
Write-Host "未发现活跃威胁,系统安全。" -ForegroundColor Green
}

# 查看最近 7 天的威胁检测记录
$cutoffDate = (Get-Date).AddDays(-7)
$recentDetections = Get-MpThreatDetection | Where-Object {
[datetime]$_.InitialDetectionTime -ge $cutoffDate
}
Write-Host "`n最近 7 天检测到 $($recentDetections.Count) 个威胁"

# 获取已隔离威胁列表
$quarantined = Get-MpThreat | Where-Object { $_.ThreatStatus -eq 3 }
Write-Host "已隔离威胁数量: $($quarantined.Count)"

# 如需恢复误报的隔离文件(谨慎操作)
# $falsePositiveId = 'THREAT-ID-HERE'
# Remove-MpThreat -ThreatID $falsePositiveId

# 生成安全态势报告
$computerStatus = Get-MpComputerStatus
$signatureStatus = Get-MpPreference

$report = [PSCustomObject]@{
计算机名称 = $env:COMPUTERNAME
报告时间 = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
Defender版本 = $computerStatus.AMServiceVersion
病毒库版本 = $computerStatus.AntivirusSignatureVersion
病毒库更新时间 = $computerStatus.AntivirusSignatureLastUpdated
实时保护 = $computerStatus.RealTimeProtectionEnabled
行为监控 = $computerStatus.BehaviorMonitorEnabled
网络保护 = $computerStatus.EnableNetworkProtection
IOAV保护 = $computerStatus.IoavProtectionEnabled
反间谍软件 = $computerStatus.AntispywareSignatureVersion
最近扫描时间 = $computerStatus.LastQuickScanEndTime
最近完整扫描 = $computerStatus.LastFullScanEndTime
}

Write-Host "`n========== 安全态势报告 =========="
$report | Format-List

# 导出报告为 CSV(适用于批量采集)
$report | Export-Csv -Path "C:\Reports\DefenderReport_$($env:COMPUTERNAME)_$(Get-Date -Format 'yyyyMMdd').csv" `
-NoTypeInformation -Encoding UTF8
Write-Host "报告已导出到 CSV 文件"

执行结果示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
未发现活跃威胁,系统安全。

最近 7 天检测到 3 个威胁
已隔离威胁数量: 0

========== 安全态势报告 ==========

计算机名称 : WKS-ADMIN-01
报告时间 : 2026-01-28 10:30:00
Defender版本 : 4.18.25010.9
病毒库版本 : 1.423.58.0
病毒库更新时间 : 2026/01/28 06:15:00
实时保护 : True
行为监控 : True
网络保护 : Enabled
IOAV保护 : True
反间谍软件 : 1.423.58.0
最近扫描时间 : 2026/01/28 02:00:15
最近完整扫描 : 2026/01/25 02:45:30

报告已导出到 CSV 文件

注意事项

  1. 管理员权限:所有 Defender 管理 cmdlet 都需要以管理员身份运行 PowerShell。普通用户只能执行 Get-MpPreference 等查询命令,无法修改配置。

  2. 排除规则最小化:每添加一条排除规则都会降低保护力度。建议定期审计排除列表,移除不再需要的排除项,并通过 Get-MpPreference 验证排除项的合理性。

  3. ASR 规则分阶段部署:新上线的 ASR 规则应先以 AuditMode 运行 1-2 周,收集日志确认无误报后,再切换为 Enabled 阻断模式,避免影响业务连续性。

  4. 病毒库更新频率:企业环境中建议将 SignatureUpdateInterval 设为 1-4 小时。零日威胁的签名通常在数小时内发布,过长的更新间隔会留下安全窗口。

  5. 兼容性检查Set-MpPreference 的部分参数在不同 Windows 版本上可用性不同。例如 EnableFileHashComputation 需要 Windows 10 1903+,PUAProtection 需要 Windows 10 1709+。部署前应在目标系统上验证参数是否生效。

  6. 与 Intune/GPO 的冲突:当 Intune 或组策略同时管理 Defender 设置时,PowerShell 的手动修改可能在下次策略刷新时被覆盖。建议在 DSC 或配置管理框架中统一管理,避免策略来源冲突导致配置偏移。

PowerShell 技能连载 - Windows Defender 安全管理

适用于 Windows 10/11 和 Windows Server 2016 及以上版本

Windows Defender(现称 Microsoft Defender for Endpoint)是 Windows 内置的端点安全解决方案,提供实时保护、漏洞扫描、攻击面减少等多层防护。对于运维人员来说,通过 PowerShell 管理 Defender 比通过 Windows 安全中心 GUI 更高效——可以批量部署策略、自动化扫描、导出安全报告,并将安全操作集成到运维自动化流程中。

本文将讲解 Defender 的配置管理、扫描自动化、威胁响应和攻击面减少(ASR)规则配置。

Defender 状态查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 查看 Defender 服务状态
Get-MpComputerStatus | Select-Object `
AMServiceVersion, AntispywareSignatureLastUpdated, AntivirusEnabled,
RealTimeProtectionEnabled, NISEnabled, `
@{N='上次快速扫描'; E={$_.QuickScanEndTime.ToString('yyyy-MM-dd HH:mm:ss')}}, `
@{N='上次全盘扫描'; E={$_.FullScanEndTime.ToString('yyyy-MM-dd HH:mm:ss')}} |
Format-List

# 查看签名版本和更新时间
Get-MpComputerStatus | Select-Object `
AntivirusSignatureVersion, AntispywareSignatureVersion,
AntivirusSignatureLastUpdated, AntispywareSignatureLastUpdated |
Format-List

# 查看检测到的威胁
Get-MpThreatDetection | Select-Object -First 10 `
@{N='检测时间'; E={$_.InitialDetectionTime.ToString('yyyy-MM-dd HH:mm:ss')}}, `
@{N='威胁名'; E={$_.ThreatName}}, `
@{N='资源'; E={$_.Resources}}, `
@{N='操作'; E={$_.ActionSuccess}} |
Format-Table -AutoSize

# 查看当前排除项
$preferences = Get-MpPreference
Write-Host "排除路径:"
$preferences.ExclusionPath | ForEach-Object { Write-Host " $_" }
Write-Host "排除扩展名:"
$preferences.ExclusionExtension | ForEach-Object { Write-Host " $_" }

执行结果示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
AMServiceVersion            : 4.18.24050.5
AntispywareSignatureLastUpdated : 2025-06-05 07:30:00
AntivirusEnabled : True
RealTimeProtectionEnabled : True
NISEnabled : True
上次快速扫描 : 2025-06-05 06:00:00
上次全盘扫描 : 2025-06-01 02:00:00

AntivirusSignatureVersion : 1.423.42.0
AntispywareSignatureLastUpdated : 2025-06-05 07:30:00

检测时间 威胁名 资源 操作
-------- ------ ---- ----
2025-06-04 15:30:22 Trojan:Win32/Emotet C:\Temp\doc.exe True
2025-06-03 08:12:45 Adware:Win32/BrowseFox C:\Users\... True

排除路径:
C:\Projects\test
D:\VirtualMachines
排除扩展名:
.vmdk
.vhd

签名更新管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 手动更新 Defender 签名
Update-MpSignature
Write-Host "签名更新已触发" -ForegroundColor Green

# 检查签名是否是最新的
$status = Get-MpComputerStatus
$signatureAge = [math]::Floor((Get-Date) - $status.AntivirusSignatureLastUpdated).TotalDays)

if ($signatureAge -gt 3) {
Write-Warning "签名已过期 $signatureAge 天,正在强制更新"
Update-MpSignature -UpdateSource MicrosoftUpdateServer
}

# 配置自动签名更新源
Set-MpPreference -SignatureUpdateInterval 6 # 每 6 小时检查更新
Set-MpPreference -SignatureUpdateCatchupInterval 2 # 如果错过,2 天内补更新

# 查看更新历史
Get-MpComputerStatus | Select-Object `
AntivirusSignatureVersion, `
@{N='签名年龄(天)'; E={$signatureAge}}, `
AntivirusSignatureLastUpdated

执行结果示例:

1
2
3
4
5
签名更新已触发

AntivirusSignatureVersion : 1.423.42.0
签名年龄(天) : 0
AntivirusSignatureLastUpdated : 2025-06-05 08:00:15

扫描自动化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 快速扫描
Start-MpScan -ScanType QuickScan
Write-Host "快速扫描完成" -ForegroundColor Green

# 全盘扫描(耗时较长)
Start-MpScan -ScanType FullScan -AsJob
Write-Host "全盘扫描已在后台启动" -ForegroundColor Cyan

# 自定义路径扫描
Start-MpScan -ScanType CustomScan -ScanPath "C:\Downloads"

# 定期扫描任务(结合计划任务)
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-NoProfile -Command Start-MpScan -ScanType QuickScan"

$trigger = New-ScheduledTaskTrigger -Daily -At "12:00PM"
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable

Register-ScheduledTask -TaskName "Defender-DailyQuickScan" `
-Action $action -Trigger $trigger -Settings $settings `
-User "SYSTEM" -RunLevel Highest -Force

Write-Host "每日快速扫描计划任务已创建" -ForegroundColor Green

# 查看扫描历史
Get-MpThreatDetection | Group-Object @{E={$_.InitialDetectionTime.ToString('yyyy-MM-dd')}} |
Select-Object Name, Count |
Sort-Object Name -Descending |
Format-Table -AutoSize

执行结果示例:

1
2
3
4
5
6
7
8
9
10
快速扫描完成
全盘扫描已在后台启动
每日快速扫描计划任务已创建

Name Count
---- -----
2025-06-05 0
2025-06-04 1
2025-06-03 2
2025-06-02 0

攻击面减少(ASR)规则

ASR 规则是 Defender 高级防护功能,可以阻止常见的攻击行为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 查看所有 ASR 规则及其状态
$asrRules = @{
'56a863a9-875e-4185-98a7-b882c64b5ce5' = '阻止滥用漏洞的已签名驱动程序'
'7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c' = '阻止 Office 应用程序创建可执行内容'
'd4f940ab-401b-4efc-aadc-ad5f3c50688a' = '阻止 Office 应用程序将代码注入其他进程'
'9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' = '阻止从电子邮件中下载的可执行内容'
'be9ba2d9-53ea-4cd1-8069-5e3661101962' = '阻止凭据窃取'
'b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4' = '阻止 WMI 事件订阅持久化'
}

Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids |
ForEach-Object {
$id = $_
$state = (Get-MpPreference).AttackSurfaceReductionRules_Actions |
Select-Object -Index ((Get-MpPreference).AttackSurfaceReductionRules_Ids.IndexOf($id))

[PSCustomObject]@{
ID = $id
规则 = $asrRules[$id] ?? '未知规则'
状态 = switch ($state) { 0 { '禁用' } 1 { '阻止' } 2 { '审计' } 6 { '警告' } }
}
} | Format-Table -AutoSize

# 启用 ASR 规则(审计模式,仅记录不阻止)
Set-MpPreference -AttackSurfaceReductionRules_Ids @(
'56a863a9-875e-4185-98a7-b882c64b5ce5',
'7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c',
'be9ba2d9-53ea-4cd1-8069-5e3661101962'
) -AttackSurfaceReductionRules_Actions @(2, 2, 2) # 2 = 审计模式

Write-Host "ASR 规则已设置为审计模式" -ForegroundColor Yellow

# 切换为阻止模式
Set-MpPreference -AttackSurfaceReductionRules_Actions @(1, 1, 1) # 1 = 阻止
Write-Host "ASR 规则已切换为阻止模式" -ForegroundColor Red

执行结果示例:

1
2
3
4
5
6
7
ID                                   规则                              状态
-- ---- ----
56a863a9-875e-4185-98a7-b882c64b5ce5 阻止滥用漏洞的已签名驱动程序 审计
7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c 阻止 Office 应用程序创建可执行内容 阻止
be9ba2d9-53ea-4cd1-8069-5e3661101962 阻止凭据窃取 阻止

ASR 规则已设置为审计模式

威胁响应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function Get-DefenderThreatReport {
<#
.SYNOPSIS
生成 Defender 威胁报告
#>
param([int]$Days = 7)

$startDate = (Get-Date).AddDays(-$Days)

$detections = Get-MpThreatDetection |
Where-Object { $_.InitialDetectionTime -ge $startDate }

$report = [PSCustomObject]@{
检测总数 = $detections.Count
活跃威胁 = (Get-MpThreat).Count
报告周期 = "$Days 天"
时间范围 = "$startDate ~ $(Get-Date -Format 'yyyy-MM-dd')"
}

# 按威胁类型分组
$byThreat = $detections | Group-Object ThreatName |
Sort-Object Count -Descending |
Select-Object -First 10 Count, Name

# 按天分组
$byDay = $detections | Group-Object @{E={$_.InitialDetectionTime.ToString('yyyy-MM-dd')}} |
Sort-Object Name |
Select-Object Name, Count

Write-Host "========== Defender 威胁报告 ($Days 天) ==========" -ForegroundColor Cyan
Write-Host "检测总数:$($report.检测总数)"
Write-Host "当前活跃威胁:$($report.活跃威胁)"

Write-Host "`nTop 威胁:" -ForegroundColor Yellow
$byThreat | Format-Table -AutoSize

Write-Host "每日检测数:" -ForegroundColor Yellow
$byDay | Format-Table -AutoSize
}

# 生成 30 天威胁报告
Get-DefenderThreatReport -Days 30

执行结果示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
========== Defender 威胁报告 (30 天) ==========
检测总数:12
当前活跃威胁:0

Top 威胁:
Count Name
----- ----
3 Trojan:Win32/Emotet
2 Adware:Win32/BrowseFox
1 PUA:Win32/MyWebSearch

每日检测数:
Name Count
---- -----
2025-05-15 2
2025-05-20 1
2025-06-01 3
2025-06-04 6

注意事项

  1. 管理员权限:Defender 管理命令需要以管理员身份运行 PowerShell
  2. 排除项最小化:排除路径和扩展名会降低防护能力,仅排除确有误报风险的路径
  3. ASR 规则部署:生产环境建议先在审计模式下运行 ASR 规则,确认无误报后再切换为阻止模式
  4. 签名更新:确保签名自动更新正常工作,离线环境需配置 WSUS 或本地更新源
  5. 扫描性能影响:全盘扫描会消耗大量 I/O 资源,应安排在业务低峰期执行
  6. 与第三方杀软共存:如果安装了第三方杀毒软件,Defender 会自动进入被动模式,仅提供有限功能