通过Azure AD Powershell查询Azure AD 群组信息
1)查询Azure AD租户中的所有组信息
若要查询Azure AD租户中的所有组信息,可以通过执行"Get-AzureADGroup -All $true"命令来查询检索当前Azure AD租户中所有组的完整列表。该命令会绕过默认的分页限制,返回当前Azure AD租户中全部的群组信息,如下图所示。
2)查询Azure AD租户中的特定组信息
若已获取了Azure AD租户中某个组的ObjectId后,可以通过执行"Get-AzureADGroup -ObjectId <ID>"命令来查询该Azure AD组的详细属性信息(如:名称、描述、组成员身份等信息),在执行该命令时,我们需要将 <ID>替换为已经获取到的实际组的ObjectId,如下图所示,我们通过ObjectId查询出该组为"AAD DC Administrators组",该组是Azure AD中负责管理域控制器 (DC) 的管理员组,其具有对Azure AD环境中所有目录、身份和相关资源的管理权限。
3)通过SearchString参数查询Azure AD租户中包含字符串"AAD"的Azure AD组所有属性信息
若想对包含某个字符串的Azure AD组进行信息查询,可通过执行"Get-AzureADGroup -SearchString "<某组包含的字符串〉" | fl "命令来查询并列出所有与该字符(不区分大小写)相关的Azure AD群组的所有可用属性详细信息,在本例中,笔者将执行"Get-AzureADGroup -SearchString "AAD" | fl "命令来对"AAD DC Administrators"组进行查询,当我们执行完上述命令后可以看到其会输出一组对象,如下图所示,每个对象代表一个与搜索条件匹配的 Azure AD 组。每个对象将包含各种字段属性,具体每个对象字段属性如下表所示
提示:"AAD DC Administrators" 组是在Azure Active Directory Domain Services (Azure AD DS) 环境中的一个特殊管理员组。这个组的成员拥有对Azure AD DS托管域的管理权限,可以执行如创建和管理用户账户、配置域服务等高级任务。这个组类似于传统Active Directory环境中的“Domain Admins”组,但专门用于Azure AD DS环境。
4) 查询所有未与本地AD同步的Azure AD安全标识符(SID)的组
假设我们所获取到的核心域控制器(DC)部署并使用了Azure AD Connect,在对Azure AD用户信息查询阶段,可执行"Get-AzureADGroup -All $true | ?{$_.OnPremisesSecurityIdentifier -eq $null}"命令来查询所有未与本地AD同步的Azure AD组,如下图所示,即在Azure AD控制台直接创建的"纯云组",而非通过Azure AD Connect同步到Azure AD中的"同步组"。
5)查询所有从本地 AD同步到Azure AD的所有组
相对来讲,我们也可以执行"Get-AzureADGroup -All $true | ?{$_.OnPremisesSecurityIdentifier -ne $null}"命令来查询出所有从本地 AD同步到Azure AD的所有组,如下图所示。
注意:使用-eq $null参数选项会筛选出那些没有本地Active Directory安全标识符的Azure AD组,这些通常是仅在Azure环境中创建的云原生组,而使用-ne $null参数选项则会筛选出那些有本地Active Directory安全标识符的Azure AD组,这些组通常是从本地AD环境同步到Azure AD的。
6)查询用户所属的组和成员角色
在对AzureAD租户中用户所属的组和角色进行查询时,我们可以通过如下powershell脚本来查询出当前Azure AD中所有组及其成员角色信息。该脚本首先会创建一个"$roleUsers"的空数组(用于存储有关用户及其组成员关系的信息),并检索当前Azure AD中的所有MSI 组并将其存储在名为 $roles 的变量中。随后使用Get-AzureADMSGroup命令来获取所有Azure AD组。对于获取的每个Azure AD组,将会使用Get-AzureADGroupMember来获取其成员,并为每个成员创建一个包含组名、成员显示名称、成员的用户主体名称和用户类型的自定义对象。该脚本执行结果如下图所示,在该脚本中,每个成员的信息被添加到$roleUsers数组中,该数组包含了所有组及其成员的列表,如下图所示,我们可以在当前的powershell中执行"$roleUsers"来查看查询出来的用户组及其成员角色信息。
代码清单3-1 查询指定用户所属的组和角色脚本
$roleUsers = @()
$roles=Get-AzureADMSGroup
ForEach($role in $roles) {
$roles=Get-AzureADMSGroup
$users=Get-AzureADGroupMember -ObjectId $role.Id
ForEach($user in $users) {
write-host $role.DisplayName, $user.DisplayName, $user.UserPrincipalName, $user.UserType
$obj = New-Object PSCustomObject
$obj | Add-Member -type NoteProperty -name GroupName -value ""
$obj | Add-Member -type NoteProperty -name UserDisplayName -value ""
$obj | Add-Member -type NoteProperty -name UserEmailID -value ""
$obj | Add-Member -type NoteProperty -name UserAccess -value ""
$obj.GroupName=$role.DisplayName
$obj.UserDisplayName=$user.DisplayName
$obj.UserEmailID=$user.UserPrincipalName
$obj.UserAccess=$user.UserType
$roleUsers+=$obj
}
}