如何使用 Az powershell 为 Azure 企业应用程序设置 'User assignment required'

How to Set 'User assignment required' with Az powershell for an Azure enterprise Application

我想听听您对以下内容的意见:

你知道它是否存在一个看起来像 Set-AzADServicePrincipal 并且工作起来像 Set-AzureADServicePrincipal 的等价物吗?我尝试了 Update-AzADServicePrincipal,但无法更新此字段。

顺便问一下,模块 AzureAD 背后的思维方式是什么,模块 AzureAD 有 cmdlt 来管理 AzureADApp,而模块 Az 也有 cmdlet 也可以管理 AzureADApp(有限制)?感谢您的反馈

不支持您正在使用的命令,您可以看到以下错误截图,请参考document查询及其参数

为了将来考虑此功能请求,您可以提出 user's voice 以便产品组可以优先考虑此功能

还有一种方法可以更新这个参数请参考这个link

是的,不支持命令 Update-AzADServicePrincipal 设置 User assignment required

在你的情况下,不确定为什么你不想使用 AzureAD 模块,如果你可以使用 Az 模块,你可以使用我下面的解决方法。

注意:请确保您的Az模块是最新的,如果不是,请在powershell会话中用Update-Module -Name Az更新模块运行 作为管理员,因为下面使用的 Get-AzAccessToken 是一个新命令。还要确保您登录的用户 account/service 主体具有更新租户中服务主体的权限,如果您使用服务主体登录,则需要 应用程序权限(不是AD App 的 API permissions 中的 Microsoft GraphApplication.ReadWrite.All 的授权) Application.ReadWrite.All

使用下面的命令,Invoke-RestMethod默认包含在powershell中,所以不用担心,这些命令获取MS Graph的令牌并直接调用MS Graph API .

$token = (Get-AzAccessToken -ResourceUrl https://graph.microsoft.com).Token
$headers = @{
    'Authorization'="Bearer $token"
    'Content-type'="application/json"
}
$body = @{
    appRoleAssignmentRequired = "true"
} | ConvertTo-Json
Invoke-RestMethod -Method Patch -Uri https://graph.microsoft.com/v1.0/servicePrincipals/<object-id of the service principal> -Headers $headers -Body $body 

运行命令后,没有输出,在门户中查看结果,运行正常。