You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过PowerShell导出Microsoft Entra ID MFA/手机应用变更审计日志遇问题

解决Entra ID MFA/手机应用变更日志导出缺失内容的问题

问题根源

你的脚本存在两个核心问题:

  1. 未筛选MFA相关活动:原脚本仅按时间过滤,导出了所有目录审计日志,没有精准定位MFA/手机应用的变更操作
  2. 嵌套属性未展开:Get-AzureADAuditDirectoryLogs返回的targetResources、additionalDetails等关键字段是嵌套对象,默认Export-Csv只会导出对象类型,不会展开其中的详细内容

修正步骤

1. 确认目标活动名称

先运行以下命令,查看所有相关的MFA/手机应用变更活动名称:

Get-AzureADAuditDirectoryLogs -Filter "activityDateTime gt $(Get-Date).AddDays(-1).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ')" | Select-Object activityDisplayName | Get-Unique

常见的目标活动名称包括:

  • Set mobile phone
  • Set authentication method
  • Update authentication method
  • Reset security info

2. 修正脚本(展开嵌套属性+精准筛选)

使用以下脚本,它会:

  • 筛选指定的MFA相关活动
  • 展开嵌套的用户信息、目标资源、操作详情
  • 导出完整的结构化数据到CSV
# 设置时间范围(UTC格式,符合Graph API要求)
$startDate = (Get-Date).AddDays(-1).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$filename = Get-Date -Format "yyyy-MM-dd"
$outputPath = "c:\install.tmp\$filename-MFA-Changes.csv"

# 获取并处理MFA相关审计日志
Get-AzureADAuditDirectoryLogs -Filter "activityDateTime gt $startDate and (activityDisplayName eq 'Set mobile phone' or activityDisplayName eq 'Set authentication method' or activityDisplayName eq 'Update authentication method' or activityDisplayName eq 'Reset security info')" |
    Select-Object `
        activityDateTime,
        activityDisplayName,
        @{Name='InitiatedByUser'; Expression={$_.initiatedBy.user.userPrincipalName}},
        @{Name='TargetUser'; Expression={$_.targetResources | Where-Object {$_.type -eq 'User'} | Select-Object -ExpandProperty displayName}},
        @{Name='TargetUserUPN'; Expression={$_.targetResources | Where-Object {$_.type -eq 'User'} | Select-Object -ExpandProperty userPrincipalName}},
        @{Name='AdditionalDetails'; Expression={$_.additionalDetails | ConvertTo-Json -Compress}} |
    Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8

3. 脚本说明

  • 时间格式修正:使用UTC的ISO 8601格式,确保和Graph API的时间筛选规则匹配
  • 活动筛选:通过activityDisplayName精准定位MFA/手机应用的变更操作
  • 嵌套属性展开:通过计算属性(@{Name=; Expression=})提取initiatedBy、targetResources中的关键信息,将additionalDetails转为JSON字符串保留所有详情
  • 编码设置:指定UTF8编码,避免中文乱码

验证导出结果

打开CSV文件后,你可以看到:

  • 操作时间、活动名称
  • 发起操作的用户UPN
  • 目标用户的姓名和UPN
  • 完整的操作详情(JSON格式,可进一步解析)

内容的提问来源于stack exchange,提问作者DuhMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:12:43