пожалуйста, добавьте информацию в ссылку на ваш ответ.

я есть проект VSTS, подключенный через участника службы к подписке Azure через конечную точку диспетчера ресурсов Azure. Это хорошо работает для моих сборок, которые конфигурируют ресурсы ARM через шаблонные, управляемые параметрами развертывания.

У меня есть дополнительное требование для настройки групп Azure AD как части сборки. У меня есть скрипт, который отлично работает с моей локальной машины. Когда я развернул его через сборку, и он выполнялся на размещенном контроллере сборки, сценарий изначально не смог найти модуль AzureAD. Я справился с этим, включив скрипт в git Repo и получив к нему доступ через:

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

Тем не менее, у меня теперь есть другая проблема, когда дело доходит до запускаNew-AzureADGroup, Сценарий требуетConnect-AzureAD запускаться до того, как команда будет введена. Это прекрасно работает путем жесткого кодирования учетных данных, но я не хочу этого делать, я хочу, чтобы он работал в контексте созданного SPN, который запускает сценарии на размещенном контроллере сборки.

Итак, вопрос в том, могу ли я получить текущий контекст SPN выполнения Azure PowerShell и передать егоConnect-AzureAD избежать хранения учетных данных в виде простого текста? Я пропускаю трюк? Есть ли альтернативы?

Мой текущий код, как показано ниже, прокомментированное соединение работает нормально из команды, как с жестко закодированными значениями. Вызов без параметров представляет пользовательский интерфейс входа в систему, который завершает сборку, поскольку он, очевидно, не является интерактивным.

## 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

Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос