在 yaml 任务中执行内联 powershell 时,为什么我的 Powershell 变量没有按预期设置:AzureCLI@2?

问题描述 投票:0回答:1

使用 Yaml AzureCLI@2 任务执行 DevOps 管道时出现以下错误。

  1. 错误:权限不足,无法完成操作。
  2. 错误:参数--assignee-object-id:需要一个参数
task: AzureCLI@2
  displayName: 'Assign role "Storage Blob Data Contributor" to the task-poll-queued-compliance-jobs1-<env> logic app'
  inputs:
    azureSubscription: ${{ parameters.connectionName }}
    scriptLocation: 'inlineScript'
    scriptType: 'pscore'
    inlineScript: '$assigneeId = (az ad sp list --all --filter "servicePrincipalType eq ''ManagedIdentity'' and displayName eq ''<logic app name>''" | ConvertFrom-Json | select -ExpandProperty id);az role assignment create --role "Storage Blob Data Contributor" --assignee-object-id $assigneeId --scope "/subscriptions/<subscriptionId>/resourceGroups/<resource group>/providers/Microsoft.Storage/storageAccounts/<storageaccount>"'

我已尝试以下方法来诊断并解决问题。

  1. 我已在 YAML 中硬编码了 $assigneeId 值并成功执行了管道。

EG。 az 角色分配 create --role "Storage Blob Data Contributor" --assignee-object-id "" --scope "/subscriptions//resourceGroups//providers/Microsoft.Storage/storageAccounts/"'

  1. 管道运行失败时,我可以从管道日志中复制要执行的内联脚本,并在 Azure Cloud shell 中运行它,不会出现任何问题。

  2. 我尝试为管道连接到Azure的应用程序注册提供资源组的所有者角色,但这也没有解决问题。

powershell azure-pipelines azure-pipelines-yaml azure-rbac
1个回答
0
投票
根本原因

根据目前信息,您服务连接中使用的App Registration没有足够的权限列出SP。

解决方案

使用 Azure 租户的“应用程序管理员”角色分配服务连接中使用的应用程序注册。

© www.soinside.com 2019 - 2024. All rights reserved.