为何Get-AzTenant仅返回4个Azure租户?如何获取全部可访问租户
如何获取所有可访问的Azure租户
问题原因
Get-AzTenant 仅返回当前Azure PowerShell上下文已显式访问过,或你的账号在该租户中拥有RBAC权限的租户。而Azure门户展示的是你的账号所有关联的租户(包括通过Azure AD B2B邀请关联、仅拥有目录级访问权限的租户),因此两者数量会出现差异。
解决方案
要获取和门户一致的全量租户列表,推荐使用Microsoft Graph API,以下是具体实现方式:
方法1:使用Microsoft Graph PowerShell模块
- 安装所需模块:
Install-Module Microsoft.Graph.Identity.DirectoryManagement -Force
- 登录并获取所有租户:
# 登录时申请读取目录的权限 Connect-MgGraph -Scopes "Directory.Read.All" # 获取所有关联租户的核心信息 Get-MgTenant | Select-Object Id, DisplayName, CountryLetterCode
方法2:调用Microsoft Graph REST API
适用于Python、C#等编程语言场景,发送GET请求到:
GET https://graph.microsoft.com/v1.0/organization
请求需携带有效访问令牌,权限要求为 Directory.Read.All 或 Organization.Read.All。返回结果会包含你账号关联的所有租户信息。
补充:基于Az模块的兼容方案
若必须使用Azure PowerShell模块,可先通过Graph获取全量租户ID,再逐个验证访问:
# 通过Graph获取所有租户列表 $allTenants = Get-MgTenant foreach ($tenant in $allTenants) { try { # 尝试切换到目标租户上下文 Connect-AzAccount -Tenant $tenant.Id -Force -ErrorAction Stop # 输出该租户信息 Get-AzTenant -TenantId $tenant.Id } catch { Write-Warning "无法访问租户 [$($tenant.DisplayName)] ($($tenant.Id)): $_" } }
此方式可获取租户基本信息,部分权限不足的租户会返回警告,但仍能拿到ID和名称,与门户展示一致。
内容的提问来源于stack exchange,提问作者MickyD
相关产品推荐
相关产品推荐

