MS Graph API - 群组和会员信息

问题描述 投票:0回答:2

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

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

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

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

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

这就是我陷入困境的地方。 根据我的阅读,它看起来像目录对象,默认情况下仅返回 ID 和删除日期。 我想获取这些对象的显示名称;显然,我可以通过针对目录对象类型运行适当的“Get”cmdlet(即

Get-MgUser
)来做到这一点; 据我所知,如果不经过“反复试验”,就无法通过 PowerShell 收集目录对象的类型...这对于简单地获取 displayName 来说似乎非常低效。

有没有更有效的方法来通过 PowerShell cmdlet 确定目录对象的显示名称,或者至少确定类型,以便我可以编写一个 case 语句来在第一次尝试时运行正确的 cmdlet?

郑重声明,这将被合并到 Powershell 脚本中,当前的迭代看起来像这样并且可以正常工作...假设传入的 Id

$member.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
    }
}

非常感谢对此的任何指导/帮助。 预先感谢!

powershell azure-active-directory microsoft-graph-api powershell-7.3
2个回答
0
投票

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

enter image description here

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

enter image description here

了解更多详细信息:https://learn.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0&tabs=http#example-1-get-the-direct -团体成员


0
投票

displayName
属性包含在默认情况下不输出的
AdditionalProperties
属性中。您可以使用
Select
提取它,例如:

Get-MgGroupMember -groupid "<redacted>" | Select Id, @{label="DisplayName";expression={$_.AdditionalProperties.displayName}}
© www.soinside.com 2019 - 2024. All rights reserved.