gpt4 book ai didi

azure - Get-AzADServicePrincipal ApplicationId 在 powershell-pipeline 中为空,但可以在 shell 上使用

转载 作者:行者123 更新时间:2023-12-03 00:03:59 25 4
gpt4 key购买 nike

Write-Host "Adding permissions to key vault"
$objectId=(Get-AzDataFactoryV2 -ResourceGroupName $rgName -Name $adfName).Identity.PrincipalId
$appId = (Get-AzADServicePrincipal -ObjectId $objectId).ApplicationId
Write-Host "~### error empty appId =" $appId
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $appId -PermissionsToSecrets Get

此脚本是从管道执行的,“$appId”为空。但它可以在 Cloud shell 上运行。

最佳答案

我想您没有为 DevOps 管道中资源管理器服务连接的服务主体授予权限。

我可以使用没有权限获取服务主体的服务主体重现您的问题,没有错误消息,但也没有输出,如果您在本地运行命令,捕获请求,您会发现 403错误。

enter image description here

But it works on cloud shell.

在cloud shell中,它使用您登录到cloud shell的用户帐户的凭据。如果有效,则仅意味着您的用户帐户有权获取服务主体。

要解决此问题,请导航至 Azure Active Directory在门户中 -> App registrations -> All applications -> 找到服务连接对应的应用程序,其名称应类似于organizationname-projectname-513f22f1-befd-xxxxxxcfe90f1 。然后点击它 -> 添加权限,如屏幕截图(注意:您的用户帐户需要管理员角色才能单击 Grant admin consent 按钮,例如 Global admin )。

enter image description here

enter image description here

授予权限后,等待一段时间,服务连接的服务主体就可以获取到服务主体,脚本应该可以正常工作。

关于azure - Get-AzADServicePrincipal ApplicationId 在 powershell-pipeline 中为空,但可以在 shell 上使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60580574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com