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

使用PowerShell创建Azure AD应用注册未自动生成服务主体,如何实现需求

Azure PowerShell等价实现门户自动创建应用、服务主体及角色配置的方案

核心前置说明

你之前执行New-AzADApplication仅生成应用注册对象、未同步生成服务主体,是因为当前Azure PowerShell Az模块的设计逻辑中,Azure AD应用注册和服务主体是两类独立的目录对象,创建应用时不会隐式自动关联服务主体,需要通过显式命令补全关联逻辑,完全可以实现你提出的两个目标,效果和门户创建应用时的自动逻辑完全一致。

完整实现步骤

  • 步骤1:创建Azure AD应用注册
    注意旧版本命令中的HomePage、IdentifierUris参数已在新版Az模块中弃用,需替换为对应新参数:
    $app = New-AzADApplication -DisplayName "NewApplication" `
      -WebHomePageUrl "http://www.microsoft.com" `
      -IdentifierUri "http://NewApplication"
    
    执行完成后,返回对象包含应用的基础属性,其中AppId为后续关联服务主体的核心标识。
  • 步骤2:创建关联服务主体,同步分配Contributor角色、自动生成客户端密钥
    该步骤可一步完成服务主体创建、角色分配、密钥生成三个操作,无需拆分执行:
    # 创建与上述应用关联的服务主体,自动分配当前订阅范围的Contributor角色
    $sp = New-AzADServicePrincipal -ApplicationId $app.AppId `
      -Role "Contributor" `
      -SkipAssignment:$false
    
    重要提醒:该命令执行完成的当下,会在返回对象中一次性返回生成的客户端密钥明文,后续无论通过门户还是PowerShell重新查询服务主体,都不会再回显明文密钥,必须第一时间记录保存。
  • 步骤3:提取并获取可使用的客户端密钥明文
    通过内置命令解密返回的密钥对象,即可得到完整的密钥内容:
    # 解密获取明文客户端密钥
    $clientSecret = $sp.Secret | ConvertFrom-SecureString -AsPlainText
    # 输出核心应用属性方便后续对接
    Write-Host "客户端ID(应用ID):$($app.AppId)"
    Write-Host "明文客户端密钥:$clientSecret"
    Write-Host "服务主体对象ID:$($sp.Id)"
    

关键注意事项

  • 执行上述命令的账号,必须同时具备两类权限:Azure AD目录下的应用注册创建权限、当前订阅下的角色分配权限(如订阅所有者、用户访问管理员),否则会触发权限不足报错。
  • 默认生成的客户端密钥有效期为2年,可通过命令中的-StartDate、-EndDate参数自定义密钥的生效、失效时间。
  • 默认Contributor角色的分配范围为当前登录的整个订阅,如果需要缩小权限范围到指定资源组或单个资源,可在创建服务主体时通过-Scope参数指定具体的资源路径。
  • 如果本地Az模块版本过低导致参数不兼容,可执行Update-Module -Name Az -Force升级到最新稳定版本后再执行操作。

内容的提问来源于stack exchange,提问作者nen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 23:15:04