azure-devops - 如何在 Azure DevOps 中实施 Connect-AzureAD
问题描述
我有一个 PowerShell 脚本来使用 Get-AzureADServicePrincipal 命令获取服务主体的对象 ID。要运行此“Get-AzureADServicePrincipal”命令,必须运行“Connect-AzureAD”命令。当我尝试通过 Azure devOps 使用“Connect-AzureAD”添加代码时,我收到错误“当应用程序未在 UserInteractive 模式下运行时显示模式对话框或表单不是有效操作”。
解决方案
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
,具体请参考。
推荐阅读
- ruby-on-rails - Rails 类如何直接在类上调用方法
- python - 在 django 登录的用户名字段中允许多个选项
- image - 由于图像 XAML 中的 dpi 差异,Canvas 中的项目与其计算位置不匹配
- flutter - 如何在堆栈中定位按钮
- gpu - XGBoost GPU 内存不足
- c# - Godot C#,Nuget 包 Newtonsoft 不会构建
- firebase - 在 Cloud Build 中使用 Firebase CLI 时出错
- php - Twig 下拉菜单 - 获取用户 id - 路由“user_profile”的“参数”id”必须匹配“\d+”
- karate - xpath 索引在空手道 UI 框架中不起作用
- android - 无法使用 shephertz app42 云 api 更新 android 应用程序支持 targetSdkVersion 28