I have two AAD(Azure Active Directory) in my account.
Entities in first AAD: ['Tenant Root Group', 'group A', 'subGroup B', 'Microsoft Partner Network', 'subscription 2']
Entities in second AAD: ['Tenant Root Group', 'subscription 3']
I'm trying to use python azure SDK to get management groups
and subscriptions
per directory
.
The code below can list entities in first directory, but other entities in second directory does not listed as my expectation.
Does anyone know how to get all entities in both directories?
from azure.mgmt.managementgroups import ManagementGroupsAPI
from msrestazure.azure_active_directory import UserPassCredentials
def get_entities(credentials):
mgmt_groups_api = ManagementGroupsAPI(credentials)
entities = mgmt_groups_api.entities.list()
entity_infos = [entity for entity in entities]
entity_names = [entity.display_name for entity in entity_infos]
print(entity_names)
def main():
credentials = UserPassCredentials(
'account',
'password',
)
get_entities(credentials)
if __name__ == '__main__':
main()
['Group A', 'subGroup B', 'subGroup C', 'subscription 1', 'subscription 2']
Thanks @juunas for pointing out what this question really need and @Joy Wang provide an API solution to get tenant list by account.
Thanks @juunas again, by using Tenants - List API we can easily listing tenants. (For more detail please take a look at his answer.)
I think it is a great general way to solve this question.
Fortunately, I found Azure SDK for Python
have provide SubscriptionClient which allow me to list tenants programmatic.
This is how I list tenants in Python:
def get_tenants() -> [TenantIdDescription]:
credentials = UserPassCredentials(
'account',
'password',
)
sub_client = SubscriptionClient(credentials)
tenants = sub_client.tenants.list()
return tenants
from azure.mgmt.managementgroups import ManagementGroupsAPI
from azure.mgmt.resource import SubscriptionClient
from msrestazure.azure_active_directory import UserPassCredentials
azure_account = ''
azure_pwd = ''
def get_credential(tenant_id: str = None):
if tenant_id:
return UserPassCredentials(
azure_account,
azure_pwd,
tenant=tenant_id
)
else:
return UserPassCredentials(
azure_account,
azure_pwd,
)
def get_entities(tenant_id=None):
credentials = get_credential(tenant_id)
mgmt_groups_api = ManagementGroupsAPI(credentials)
entities = mgmt_groups_api.entities.list()
entity_infos = [entity for entity in entities]
entity_names = [entity.display_name for entity in entity_infos]
print(f' entities: {entity_names}')
def get_tenants():
credentials = get_credential()
sub_client = SubscriptionClient(credentials)
tenants = sub_client.tenants.list()
return tenants
def main():
tenants = get_tenants()
i = 0
print('[tenant list]')
for tenant in tenants:
print(f'tenant {i}:')
print(f' name: {tenant.display_name}')
print(f' id: {tenant.tenant_id}')
get_entities(tenant.tenant_id)
print()
i = i + 1
if __name__ == '__main__':
main()
[tenant list]
tenant 0:
name: tenant1
id: 00000000-0000-0000-0000-000000000000
entities: ['Tenant Root Group', 'group A', 'subGroup B', 'Microsoft Partner Network', 'subscription 2']
tenant 1:
name: tenant2
id: 00000000-0000-0000-0000-000000000000
entities: ['Tenant Root Group', 'subscription 3']