VSTS Build y PowerShell y AzureAD Authentication

Tengo un proyecto VSTS conectado a través de un Principal de servicio a una suscripción de Azure a través de un punto final de Azure Resource Manager. Esto funciona bien para mis compilaciones que configuran recursos ARM a través de despliegues basados en parámetros.

Tengo un requisito adicional para configurar grupos de Azure AD como parte de la compilación. Tengo un script que funciona bien desde mi máquina local. Cuando lo implementé a través de la compilación y se ejecutó en el controlador de compilación alojado, el script inicialmente no pudo encontrar el módulo AzureAD. Resolví esto al incluir el script en git Repo y acceder a él a través de:

$adModulePath = $PSScriptRoot + "\PsModules\AzureAD\2.0.0.131\AzureAD.psd1"
Import-Module $adModulePath 

Sin embargo, ahora tengo otro problema cuando se trata de ejecutarNew-AzureADGroup. El guión requiereConnect-AzureAD para ejecutarse antes de que se emita el comando. Esto funciona bien codificando una credencial, pero no quiero hacer esto, quiero que se ejecute en el contexto del SPN creado, que ejecuta los scripts en el controlador de compilación alojado.

Entonces, la pregunta es, ¿puedo obtener el contexto actual del SPN de ejecución de Azure PowerShell y pasarlo aConnect-AzureAD para evitar el almacenamiento de credenciales en texto sin formato? ¿Me estoy perdiendo un truco? ¿Hay alguna alternativa?

Mi código actual es el siguiente, la conexión comentada funciona bien desde el comando como con los valores codificados. La llamada sin parámetros presenta la IU de inicio de sesión que finaliza la compilación, ya que obviamente no es interactiva.

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

Connect-AzureAD

Write-Output "------------------ Start: Group Creation ------------------"

$TestForAdminGroup = Get-AzureADGroup -SearchString $AdminGroup
$TestForContributorGroup = Get-AzureADGroup -SearchString $ContributorGroup
$TestForReaderGroup = Get-AzureADGroup -SearchString $ReaderGroup

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta