【问题标题】:How do I run Connect-AzureAD from a DevOps release pipeline?如何从 DevOps 发布管道运行 Connect-AzureAD?
【发布时间】:2020-04-29 15:26:49
【问题描述】:

我需要从发布管道中的 Powershell 脚本运行 New-AzureADServiceAppRoleAssignment。

前提条件是Connect-AzureAD,默认情况下会提示进行身份验证。我查看了 StackOverflow 以了解我能找到的这个问题的所有排列方式,但提到的解决方案都不起作用。

Azure Powershell 任务存在已登录,这是刚刚发生的。我需要做什么才能使用登录的上下文来连接 AzureAD 模块?

【问题讨论】:

  • 是什么阻止您在脚本中运行Connect-AzureAD?
  • 我在问题中说 - 它提示进行身份验证。发布管道任务无法确认该提示,因此发布挂起直到超时。

标签: azure-devops azure-active-directory


【解决方案1】:

如何从 DevOps 发布管道运行 Connect-AzureAD?

那是因为Connect-AzureAD 默认会在弹出窗口中提示您输入登录名和密码。

默认情况下,在 Azure DevOps Connect-AzureAD 内部等待身份验证。

我们可以尝试使用Connect-AzureAD 的-Credential 选项:

$SecurePassword = ConvertTo-SecureString $AdminPassword -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ($AdminUserEmailAddress, $SecurePassword)
Connect-AzureAD -Credential $Credential

并且我们需要在您的 Azure AD 中创建具有访问 Microsoft Graph 和生成密钥的权限的服务主体。之后,您可以使用服务主体的 Application ID 和 Key 作为$Credential 的登录名和密码。

我们可以将凭证存储在秘密变量中。

您可以查看this 和this 线程以了解更多详细信息。

希望这会有所帮助。

【讨论】:

  • DevOps 管道已在服务主体下运行。我该如何使用它?
  • 如果您已经在服务主体下运行,您可以尝试通过这种方式使用它:stackoverflow.com/questions/60185213/…
  • 评论中链接的答案运行没有错误,但我现在无法为服务主体分配适当的权限以运行 cmdlet。但是,从原始问题的角度来看,这个答案是有效的。
  • @TomW 你有没有发现你需要什么权限?就我而言,Connect-AzureAD 因对象引用错误而失败。似乎我缺少一些权限,但我找不到我缺少的权限
  • @PaulVrugt 如果我没记错的话,这是脚本对未经授权的令牌执行的操作,而不是连接过程。我的目标是使用 DevOps 已经获得的令牌而不是运行Connect-AzureAD。所以我帮不上忙,抱歉。
猜你喜欢
  • 1970-01-01
  • 2021-12-12
  • 2020-08-26
  • 2020-01-08
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多