Connect-AzureAD powershellコマンドを自動化できません。
ユーザーobjectIDを取得するために、操作Connect-AzureADを自動化する必要があり、そのために次のコードを使用しました。
Connect-AzureAD -TenantId $tenantId -Verbose
$userObjectID = $(Get-AzureADUser -Filter "UserPrincipalName eq '$Owner'").ObjectId
操作がConnect-AzureADでスタックしました。これを解決する方法?
解決策を見つけてテストしました。
このタスクはAzure Devopsパイプラインで実行しています。このタスクは、「Azure PowerShellスクリプト」と呼ばれ、最新のインストール済みバージョンで実行されます。
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
Connect-AzureAD
デフォルトでは、ポップアップウィンドウでログインとパスワードの入力を求められます。
Azure DevOps Connect-AzureAD
の内部では、ユーザーが何も入力できないため、ユーザーとパイプラインからの入力を待機するスタックはデフォルトで終了しません。
使用する必要があります:
Connect-AzureAD -Credential $Credential -TenantId $tenantId -Verbose
ここで、$Credential
はPSCredential
オブジェクトです。
理想的には、Microsoft Graphにアクセスして秘密キーを生成する権限を持つAzure ADでサービスプリンシパルを作成する必要があります。その後、$Credential
のログインとパスワードとして、サービスプリンシパルのアプリケーションIDとキーを使用できます。
Azure DevOpsでは、KeyVaultにリンクされたシークレット変数またはVariablesグループを使用してキーを保護することを忘れないでください。