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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:33:45