如何使用 Microsoft Graph PowerShell 报告所有用户和组成员身份
如果您只需要找出单个用户,那么作为管理员确定用户属于哪些组是非常简单的。从 Microsoft Entra 中,您只需找到目标用户并单击“组”选项卡即可。但是,使用管理门户并不总是首选,特别是当您需要经常查找此信息或需要找出每个用户的组成员身份时。
在本教程中,我将向您展示如何使用 Microsoft Graph PowerShell 生成所有用户组成员身份的报告。
关于 Get-MgUserMemberOfAsGroup
Get-MgUserMemberOfAsGroup cmdlet 允许您查找用户所属的组,这在尝试解决基于访问的问题时很有帮助,或者晚上如果您被要求为单个用户生成成员资格报告或您组织中的所有用户。
该 cmdlet 是 Microsoft.Graph.Users 模块的一部分,因此,您需要确保安装了最新版本的 Microsoft Graph PowerShell 模块。有关如何安装此模块的详细信息,请按照我的如何安装 Microsoft Graph PowerShell 模块教程。
有关此 cmdlet 的更多信息,请参阅以下内容:
- 名称: Get-MgUserMemberOfAsGroup
- 方法:GET
- URI: https://graph.microsoft.com/v1.0/users/{user-id}/memberOf/group
- 输出类型:对象
- 权限: User.Read.All、Directory.Read.All
查找用户所属的所有组
您可以使用下面的代码来获取单个用户所属的组的列表。确保使用目标用户的用户名更改 -UserId 字段。
Connect-MgGraph -Scopes user.read.all, directory.read.all
Get-MgUserMemberOfAsGroup -UserId [email 上述命令的结果将如下所示:
使用 Microsoft Graph PowerShell 报告所有用户和组成员身份
我们可以扩展最后一个命令,以生成 Microsoft 365 租户中所有用户及其组成员身份的报告。为此,我们将使用 ForEach 命令循环遍历每个用户并将这些信息添加到数组中。然后该数组将导出为 CSV。
有关如何使用 ForEach 循环生成您自己的自定义报告的更多详细信息,请参阅我的教程如何通过示例使用 Powershell Foreach 循环。
Connect-MgGraph -Scopes user.read.all, directory.read.all
$users = Get-MgBetaUser -All
$Report = [System.Collections.Generic.List[Object]]::new()
ForEach ($user in $users){
$groups = $null
$groups = Get-MgUserMemberOfAsGroup -UserId $user.UserPrincipalName
ForEach ($group in $groups){
$obj = [PSCustomObject][ordered]@{
"User" = $User.UserPrincipalName
"Group Name" = $group.DisplayName
"Is M365 Group" = $(if ($group.GroupTypes -match 'Unified'){"Yes"}Else{"No"})
"Membership Type" = $(if ($group.GroupTypes -match 'DynamicMembership'){"Dynamic"}Else{"Assigned"})
"Security Enabled" = $group.SecurityEnabled
"Mail Enabled" = $group.MailEnabled
"Mail Address" = $(if ($Group.mail -eq $Null){"N/A"}Else{$group.mail})
}
$report.Add($obj)
}
}
$report | Export-csv -path C:\temp\UserGroupMemberReport.csv