首页 > 解决方案 > 如何在 Azure DevOps 中实施 Connect-AzureAD

问题描述

我有一个 PowerShell 脚本来使用 Get-AzureADServicePrincipal 命令获取服务主体的对象 ID。要运行此“Get-AzureADServicePrincipal”命令,必须运行“Connect-AzureAD”命令。当我尝试通过 Azure devOps 使用“Connect-AzureAD”添加代码时,我收到错误“当应用程序未在 UserInteractive 模式下运行时显示模式对话框或表单不是有效操作”。

标签: azure-devopsazure-powershell

解决方案


Connect-AzureAD默认情况下会在弹出窗口中提示您输入登录名和密码。

默认情况下,在 Azure DevOps 内部Connect-AzureAD,等待用户和管道输入的堆栈永远不会完成,因为用户无法输入任何内容。

您可以尝试在 Azure PowerShell 脚本任务中运行以下脚本:</p>

Install-Module -Name "AzureAD" -Force
$context = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext
$graphToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.microsoft.com").AccessToken
$aadToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.windows.net").AccessToken
Write-Output "Hi I'm $($context.Account.Id)"
Connect-AzureAD -AadAccessToken $aadToken -AccountId $context.Account.Id -TenantId $context.tenant.id

此解决方案由这张提供。此外,该票证还提供了一个解决方案-Credential $Credential,具体请参考。


推荐阅读