如何获取AAD用户所属的所有租户ID?含PowerShell实现方法
如何用PowerShell获取AAD用户所属的所有租户ID?
刚好之前帮同事解决过这个需求——要实现像Azure门户里不用逐个登录就能查看账户所属所有目录的效果,用PowerShell完全可以做到。下面分两种常用的模块给你讲具体操作:
方法一:使用Microsoft Graph PowerShell(官方推荐)
因为AzureAD模块已经进入维护模式,微软现在更推荐用Microsoft Graph来操作AAD资源,步骤如下:
- 安装并导入模块(如果还没装过):
# 安装Microsoft Graph模块,Force参数强制覆盖旧版本,AllowClobber解决模块冲突 Install-Module -Name Microsoft.Graph -Force -AllowClobber # 导入用户和组织相关的子模块 Import-Module Microsoft.Graph.Users
- 登录用户账户(不要指定租户):
这里关键是不要指定具体租户ID,这样PowerShell会自动识别该用户有权访问的所有租户:
# 请求必要的权限:读取用户自身信息、读取组织信息 Connect-MgGraph -Scopes "User.Read", "Organization.Read.All"
登录后会弹出浏览器让你输入账户密码,完成验证即可。
- 查询并提取所有租户ID和名称:
# 获取当前登录用户的ID $currentUserId = (Get-MgMe).Id # 查询该用户关联的所有组织(包括主租户和来宾租户) $userTenants = Get-MgUserOrganization -UserId $currentUserId # 输出租户ID和对应的目录名称,和门户下拉列表一致 $userTenants | Select-Object Id, DisplayName
方法二:使用AzureAD模块(维护模式)
如果习惯用旧的AzureAD模块,也可以这么操作:
- 安装并导入模块:
Install-Module -Name AzureAD -Force -AllowClobber Import-Module AzureAD
- 登录用户账户:
同样不要指定租户,直接登录:
Connect-AzureAD
- 获取所有租户信息:
# 直接获取当前用户的所有租户详情,提取ID和名称 Get-AzureADTenantDetail | Select-Object ObjectId, DisplayName
一些注意事项
- 权限要求:确保登录的用户有
Organization.Read.All(Graph)或对应的AzureAD权限,否则可能无法看到所有关联租户。 - 来宾用户场景:如果是作为来宾用户加入其他租户,这些命令也能列出你被邀请的租户信息,和门户显示一致。
- 不要指定租户登录:如果登录时加了
-TenantId参数,只会返回该指定租户的信息,就达不到查看所有目录的效果了。
内容的提问来源于stack exchange,提问作者Gregory Suvalian
相关产品推荐
相关产品推荐

