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

如何通过ARM模板在下拉列表中展示订阅用户?

解决方案:在ARM UI模板中展示订阅关联租户用户下拉列表

核心思路

ARM部署前的UI模板(CreateUiDefinition.json)本身无内置用户列表数据源,但可通过调用Microsoft Graph API,在下拉控件的loadOptions函数中动态拉取当前订阅关联租户下的用户数据,直接渲染到下拉列表中。

具体实现代码

在CreateUiDefinition.json中添加如下结构的下拉控件:

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUiDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "selectedUser",
        "type": "Microsoft.Common.DropDown",
        "label": "选择订阅用户",
        "toolTip": "从当前租户的用户列表中选择",
        "loadOptions": "[loadOptions('loadUsers')]"
      }
    ],
    "steps": [],
    "outputs": {
      "selectedUserObjectId": "[steps('basics').selectedUser.value]",
      "selectedUserName": "[steps('basics').selectedUser.displayName]"
    }
  },
  "functions": [
    {
      "name": "loadUsers",
      "parameters": [],
      "output": {
        "type": "array",
        "value": "[map(parse(fetch('https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName').content).value, (user) => parse(concat('{\"label\":\"', user.displayName, ' (', user.userPrincipalName, ')\" , \"value\":\"', user.id, '\"}')))]"
      }
    }
  ]
}

关键说明

  • Graph API调用逻辑:通过fetch调用Microsoft Graph的/users端点,仅拉取展示所需的字段(用户ID、显示名、用户主体名),减少数据传输量。
  • 数据格式转换:用map函数将Graph返回的原始用户数据,转换成下拉控件要求的label(前端显示文本)和value(后端存储值,此处用用户ObjectId)格式。
  • 权限要求:执行部署的用户需拥有Microsoft Graph的User.Read.All权限(至少具备租户用户读取权限),否则API会返回权限错误。
  • 输出映射:在outputs中可将选中用户的ObjectId和名称传递给后续ARM模板,用于资源部署配置。

权限受限场景的替代方案

若无法调用Graph API,可采用静态嵌入用户列表的方式(不支持动态更新):

{
  "name": "selectedUser",
  "type": "Microsoft.Common.DropDown",
  "label": "选择订阅用户",
  "options": [
    {
      "label": "张三 (zhangsan@contoso.com)",
      "value": "12345678-1234-1234-1234-1234567890ab"
    },
    {
      "label": "李四 (lisi@contoso.com)",
      "value": "87654321-4321-4321-4321-ba0987654321"
    }
  ]
}

内容的提问来源于stack exchange,提问作者Alfonso Díaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:25:34