【问题标题】:MS Graph API - Group & membership infoMS Graph API - 群组和会员信息
【发布时间】:2022-12-15 04:11:15
【问题描述】:

我正在尝试列出我们 Azure Active Directory 组织中的所有组以及所有相关成员(用户、组、联系人等)。

由于我无法找到通过各种 Microsoft 门户网站使用简单导出按钮执行此操作的方法,因此我开始通过 Powershell 获取对 Microsoft Graph API/SDK 的访问权限。

我绝不是 PowerShell 专家,因为它不是我的首选脚本之一;但是,据我所知,以这种方式提取组信息的能力相当有限。

以下是我迄今为止能够完成的工作:

  • 使用Get-MgGroup -All 拉入组列表
  • 使用Get-MgGroupMembers 拉回目录对象列表。

这就是我卡住的地方。从我读过的内容来看,默认情况下目录对象似乎只返回 ID 和删除日期。我想获得这些对象的显示名称;我显然可以通过为目录对象类型运行适当的“获取”cmdlet 来做到这一点(即Get-MgUser);据我所知,如果没有“反复试验”,就无法通过 PowerShell 收集目录对象的类型……简单地获取 displayName 似乎效率非常低。

是否有更有效的方法来通过 PowerShell cmdlet 确定目录对象的 displayName 或至少确定类型以便我可以编写 case 语句以在第一次尝试时运行正确的 cmdlet?

作为记录,这将被合并到一个 Powershell 脚本中,当前的迭代看起来像这样并且可以正常工作......假设传入 $member.Id 的 Id 属于用户类型目录对象。

Connect-MgGraph
$groups=Get-mgGroup -All
ForEach ($group in $groups){
    $members = @{}
    $members = Get-MgGroupMember -GroupId $group.Id -All
    ForEach ($member in $members){
        $user = Get-MgUser $member.Id
        Write-Output $object.ODataType
        Write-output $group.DisplayName "," $member.Id "," $user.UserType"," $user.DisplayName "," $user.UserPrincipalName "," $user.Mail >> C:scripts\Azure_Groups.txt
    }
}

将不胜感激任何方向/协助。提前致谢!

【问题讨论】:

  • Get-MgGroupMember 返回可以是用户、设备、其他组或服务主体的对象。你至少应该检查一下你是否有用户调用 Get-MgUser 之前的对象。难道没有一个 .ObjectType 属性可以显示这个吗?
  • @Theo - 这也是我的假设,但据我所知,它看起来像是在 ODATA 中,我找不到从 PowerShell $newGroup = Get-MgGroup -Filter "displayName eq '<groupName>'"Write-Output $newGroup.ObjectType 扩展/查询的方法,但什么都不返回。

标签: powershell azure-active-directory microsoft-graph-api powershell-7.3


【解决方案1】:

不确定为什么它不返回有关 PowerShell 查询的所有详细信息:

这在 MS Graph Explorer 中运行良好,结果显示了成员的所有详细信息:

更多详情:https://learn.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0&tabs=http#example-1-get-the-direct-membership-in-a-group

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多