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

如何获取Teams变更报告及为用户导入脚本添加报告导出功能

问题解答

1. 如何获取Microsoft Teams的变更报告?

  • 通过Microsoft 365管理中心

    1. 登录Microsoft 365管理中心,进入报表 > 审核日志
    2. 在筛选条件中选择活动源为Microsoft Teams,再按需设置时间范围、活动类型(如成员添加/移除、团队创建/修改等)
    3. 可直接查看结果,或点击导出将日志保存为CSV格式
  • 通过PowerShell(Microsoft Graph模块)
    先确保已安装并连接Microsoft Graph模块:

    # 安装模块(未安装时执行)
    Install-Module Microsoft.Graph -Force -AllowClobber
    # 连接Graph,需AuditLog.Read.All权限
    Connect-MgGraph -Scopes AuditLog.Read.All
    

    再查询Teams相关审核日志:

    # 获取最近7天的Teams变更日志并导出
    Get-MgAuditLogDirectoryAudit -Filter "ResourceDisplayName eq 'Microsoft Teams'" -All | 
      Select-Object ActivityDateTime, OperationName, UserPrincipalName, TargetResources |
      Export-Csv -Path "Teams_Change_Report.csv" -NoTypeInformation
    
  • 通过Teams管理中心
    登录Teams管理中心,进入分析与报告 > 使用情况报告,选择对应报告类型(如团队活动报告、成员活动报告),筛选后导出即可。

2. 修改PowerShell脚本以导出用户添加报告

通过创建结果数组记录每个用户的添加状态,最终导出为CSV文件,修改后的脚本如下:

# Read team users from CSV file
$TeamUsers = Import-CSV "Import_Path.csv"
$i = 0
# 创建数组存储报告结果
$reportResults = @()

# Group the objects by their TeamDesc property, so we only query each group once
$TeamUsers | Group-Object TeamDesc | ForEach-Object {
    #Get the GroupId of this Group
    $groupId = (Get-Team -DisplayName $_.Name).GroupId
    #If the Group couldn't be found, just skip below logic
    if(-not $groupId) {
        # 记录团队不存在的用户情况
        foreach($user in $_.Group){
            $reportResults += [PSCustomObject]@{
                TeamName = $_.Name
                UserPrincipalName = $user.UserPrincipalName
                Role = $user.Role
                Status = "失败"
                ErrorMessage = "未找到对应团队"
            }
            $i++
        }
        return
    }
    #If the Group could be found, create a hashtable for future splatting
    $params = @{ GroupId = $groupId }
    #now we can enumerate each object in each group of objects
    foreach($user in $_.Group){
        try {
            # create a hashtable for splatting progress
            $progress = @{
              PercentComplete = $i++ / $TeamUsers.Count * 100
              Activity        = 'Adding Users to MS Teams!!'
              Status = 'Working on Team: "{0}" and User: "{1}"' -f $_.Name, $user.UserPrincipalName
            }
            Write-Progress @progress
            # add this user with this role to the hashtable
            $params['User'] = $user.UserPrincipalName
            $params['Role'] = $user.Role
            Add-TeamUser @params
            # 记录成功添加的用户信息
            $reportResults += [PSCustomObject]@{
                TeamName = $_.Name
                UserPrincipalName = $user.UserPrincipalName
                Role = $user.Role
                Status = "成功"
                ErrorMessage = $null
            }
        }
        catch {
            $errorMsg = $_.ToString()
            ('Error occurred for {0} - {1}' -f $_.Name, $user.UserPrincipalName), $errorMsg | Write-Warning
            # 记录失败的用户及错误信息
            $reportResults += [PSCustomObject]@{
                TeamName = $_.Name
                UserPrincipalName = $user.UserPrincipalName
                Role = $user.Role
                Status = "失败"
                ErrorMessage = $errorMsg
            }
        }
    }
}

# 导出报告到CSV文件
$reportResults | Export-Csv -Path "Teams_User_Add_Report.csv" -NoTypeInformation -Encoding UTF8
Write-Host "报告已导出到 Teams_User_Add_Report.csv"

修改说明:

  • 新增$reportResults数组,专门存储每个用户的添加结果
  • 当团队不存在时,为该团队下所有用户记录失败状态及原因
  • 在try块中添加成功记录,catch块中添加失败记录及错误详情
  • 脚本结束后将结果导出为UTF8编码的CSV文件,避免中文乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:10:36