You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeError: 'ADGroup' object is not subscriptable Azure AD组报错

Azure Python SDK Azure AD组管理问题解答

1. ADGroup类型说明

ADGroup是azure-graphrbac SDK内置的Azure AD组实体模型类,归属于azure.graphrbac.models命名空间,对应Azure AD平台上的组实体对象。组创建、查询类操作返回的ADGroup实例,会携带组的全量核心属性,包括object_id、display_name、mail_nickname、mail_enabled、security_enabled等。

2. 获取创建后组的object_id并存入列表的实现方式

groups.create()方法返回的ADGroup实例直接暴露object_id属性,读取该属性追加到目标列表即可,核心实现逻辑如下:

from azure.common.credentials import ServicePrincipalCredentials
from azure.graphrbac import GraphRbacManagementClient
from azure.graphrbac.models import GroupCreateParameters
import json

# 推荐用上下文管理器读取JSON文件,避免资源泄漏
with open('csvjson.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

credentials = ServicePrincipalCredentials(
    client_id = "<你的应用客户端ID>",
    secret = "<你的应用客户端密钥>",
    tenant = "<你的租户ID>",
    resource = 'https://graph.windows.net'
)

graphrbac_client = GraphRbacManagementClient(
    credentials,
    "<你的租户ID>"
)

group_object_ids = []
for item in data:
    # 注意:GroupCreateParameters的security_enabled、mail_enabled为必填参数,需根据组类型赋值
    create_params = GroupCreateParameters(
        display_name=item['Group Name'],
        mail_nickname=item['Mail Nick Name'],
        security_enabled=True, # 创建安全组设为True
        mail_enabled=False # 非邮件组设为False
    )
    created_group = graphrbac_client.groups.create(create_params)
    # 读取object_id存入列表
    group_object_ids.append(created_group.object_id)

注意:原有代码中初始化GroupCreateParameters时缺失上述两个必填布尔参数,实际运行会触发参数校验错误,需要补全。

3. 序列化创建结果抛出TypeError的原因与修复方案

报错原因

groups.create()返回的是ADGroup类的实例,属于自定义模型对象,不是Python原生字典类型,无法直接被json.dump()/json.dumps()序列化,因此会抛出TypeError。

修复方案

选择以下任意一种方式将模型对象转为可序列化的字典后,再做JSON存储即可:

  • 方案1:手动提取需要的字段组装字典,灵活控制输出字段
group_result = []
for item in data:
    created_group = graphrbac_client.groups.create(create_params)
    # 按需提取字段组装字典
    group_info = {
        "object_id": created_group.object_id,
        "display_name": created_group.display_name,
        "mail_nickname": created_group.mail_nickname
    }
    group_result.append(group_info)

# 写入JSON文件
with open('created_groups.json', 'w', encoding='utf-8') as f:
    json.dump(group_result, f, indent=2, ensure_ascii=False)
  • 方案2:调用SDK模型内置的as_dict()方法,自动将模型所有属性转为字典
# 替换手动组装字典的逻辑即可
group_info = created_group.as_dict()
group_result.append(group_info)

内容的提问来源于stack exchange,提问作者Nikhil G P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:57:20