如何通过PowerShell调用Defender高级狩猎查询获取漏洞数据?
可以通过PowerShell调用Defender高级狩猎查询并执行后续任务
完全可以用PowerShell调用你的Defender高级狩猎查询,以下是具体实现步骤:
1. 准备依赖模块
首先安装并导入Microsoft Graph PowerShell的安全模块,这是调用Defender API的官方工具:
# 安装模块(首次运行需要) Install-Module -Name Microsoft.Graph.Security -Force -AllowClobber # 导入模块 Import-Module Microsoft.Graph.Security
2. 身份认证
使用拥有Defender权限的账号登录,需要的权限为SecurityEvents.Read.All:
Connect-MgGraph -Scopes "SecurityEvents.Read.All"
执行后会弹出登录窗口,完成账号验证即可。
3. 执行狩猎查询
将你的查询语句嵌入PowerShell脚本,调用API执行查询:
# 定义你的高级狩猎查询 $huntingQuery = @" DeviceTvmSoftwareVulnerabilities | summarize count() by VulnerabilitySeverityLevel | order by VulnerabilitySeverityLevel "@ # 调用API执行查询并获取结果 $queryResults = Invoke-MgQuerySecurityHuntingQuery -Query $huntingQuery
4. 处理结果并执行后续任务
查询返回的结果是JSON格式,可以转换为PowerShell对象后进行后续操作,比如输出表格、导出文件或自动化分析:
# 格式化结果为易读的对象 $formattedResults = $queryResults.Value | ForEach-Object { [PSCustomObject]@{ 漏洞严重级别 = $_.VulnerabilitySeverityLevel 数量 = $_.Count_ } } # 示例1:输出格式化表格 $formattedResults | Format-Table -AutoSize # 示例2:导出到CSV文件 $formattedResults | Export-Csv -Path "C:\漏洞统计结果.csv" -NoTypeInformation -Encoding UTF8 # 示例3:针对高/严重级别漏洞触发后续告警逻辑 $criticalHighCount = ($formattedResults | Where-Object { $_.漏洞严重级别 -in "Critical", "High" }).数量 | Measure-Object -Sum | Select-Object -ExpandProperty Sum if ($criticalHighCount -gt 500) { Write-Host "高/严重级别漏洞数量超过阈值,触发告警" # 这里可以添加邮件通知、自动化修复触发等逻辑 }
注意事项
- 确保使用的账号拥有Defender高级狩猎的访问权限(如安全分析师、Defender管理员角色)
- 定期更新Microsoft Graph模块以避免兼容性问题:
Update-Module -Name Microsoft.Graph.Security
内容的提问来源于stack exchange,提问作者user3302129
相关产品推荐
相关产品推荐

