使用New-AzureADMSApplication创建应用注册时如何自定义所有者
实现方法
New-AzureADMSApplication 本身未提供创建阶段直接配置所有者的参数,默认会强制将当前连接Azure AD的用户添加为新建应用注册的所有者。不需要使用存在SignInAudience参数兼容问题的旧版New-AzureADApplication,也不需要走创建后删除默认所有者再重新添加的迂回流程,可以直接通过调用Microsoft Graph接口在创建环节一次性完成所有者配置,支持自定义指定所有者或完全不设置所有者两种场景。
创建时直接指定自定义所有者
复用当前Azure AD PowerShell会话的鉴权上下文调用应用创建接口,在请求体中直接绑定目标所有者列表,创建完成后应用的所有者只会包含你指定的对象,不会自动添加当前连接用户:
# 替换为你需要设置为所有者的用户/服务主体的Azure AD对象ID $targetOwnerIds = @( "第一个所有者的对象ID", "第二个所有者的对象ID" ) # 构造请求体,可按需补充应用注册的其他配置(如回调地址、权限配置等) $createAppBody = @{ displayName = "你的应用注册名称" signInAudience = "AzureADandPersonalMicrosoftAccount" # 支持多租户+个人账号场景,无参数兼容问题 owners = @( $targetOwnerIds | ForEach-Object { @{ "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$_" } } ) } | ConvertTo-Json -Depth 10 # 执行创建请求 $createdApp = Invoke-AzureADMSGraphRequest -Method Post -Uri "https://graph.microsoft.com/v1.0/applications" -Body $createAppBody
创建时完全不设置所有者
如果需要新建的应用注册初始无任何所有者,只需在请求中添加指定请求头关闭默认添加调用者为所有者的逻辑,同时不在请求体中传入所有者字段即可:
# 构造应用配置 $createAppBody = @{ displayName = "无所有者测试应用" signInAudience = "AzureADandPersonalMicrosoftAccount" } | ConvertTo-Json # 添加跳过默认所有者赋值的请求头 $requestHeaders = @{ "Microsoft.Graph.DoNotAddCallerAsOwner" = "true" } # 执行创建请求 $createdApp = Invoke-AzureADMSGraphRequest -Method Post -Uri "https://graph.microsoft.com/v1.0/applications" -Body $createAppBody -Headers $requestHeaders
注意事项
- 以上操作均在应用创建环节一次性完成所有者配置,不存在创建后二次修改的冗余步骤
- 支持所有
signInAudience配置项,覆盖单租户、多租户、多租户+个人账号等全部场景 - 无需额外安装依赖,只要已安装Azure AD PowerShell 2.0模块并通过
Connect-AzureAD建立租户连接即可直接执行
内容的提问来源于stack exchange,提问作者spikey
相关产品推荐
相关产品推荐

