我正在尝试提取我们的 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 查询的所有详细信息:
这在 MS Graph Explorer 中运行良好,结果显示了成员的所有详细信息:
displayName
属性包含在默认情况下不输出的AdditionalProperties
属性中。您可以使用Select
提取它,例如:
Get-MgGroupMember -groupid "<redacted>" | Select Id, @{label="DisplayName";expression={$_.AdditionalProperties.displayName}}