пожалуйста, добавьте информацию в ссылку на ваш ответ.
я есть проект 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
Спасибо