2016-11-23 2 views
0

У меня есть сценарий Powershell, чтобы установить приложение настройки конфигурации, как это:Логин-AzureRmAccount без присмотра

Set-AzureRMWebApp -Name $SiteName -ResourceGroupName $ResourceGroupName -AppSettings $settings 

Этот скрипт будет использоваться VSTS Release-менеджмент в Azure, но и разработчиками в рамках их VS2015 IDE.

Сценарий PS имеет команду «Login-AzureRmAccount», которая покажет всплывающее окно на их локальной машине, это нормально.

Но этот сценарий также используется Release-управление с помощью задачи PS, но я получаю сообщение об ошибке, когда сбрасывая релиз: «Отображение модального диалогового окна или формы, когда приложение не работает в UserInteractive режима не действительная операция '.

Как предотвратить диалог только в VSTS?

(обратите внимание, что Set-AzureRMWebApp работает нормально, но только предотвращение диалога приводит к ошибке задачи).

+1

Пожалуйста, смотрите ' Аутентификация с помощью раздела «Главная страница службы» здесь: https://blogs.endjin.com/2016/01/azure-resource-manager-authentication-from-a-powershell-script/. НТН. –

+0

Если вы используете задачу «Сценарий Azure Powershell», процесс уже аутентифицируется при запуске вашего скрипта. Думаю, вам просто нужно выяснить, как пропустить 'Login-AzureRmAccount'. –

ответ

0

Это исправление, которое работает:

if ([Environment]::UserInteractive -and 
     !([Environment]::GetCommandLineArgs() |? {$_ -ilike '-NonI*'})) 
{ 
    Login-AzureRmAccount 
} 
0

Вам необходимо параметризовать раздел входа в свой скрипт, чтобы он выполнялся только в том случае, если он не запускается dev. Когда разработчики запускают его, вызовите его с помощью переключателя, чтобы сказать это.

Затем вы можете сделать что-то вроде

$secret = yourServicePrincipalKey 
$azureApplicationId = yourServicePrincipalID 
if (!switch) 
{ 
$password = ConvertTo-SecureString -String $secret -AsPlainText -Force 
$creds = New-Object System.Management.Automation.PSCredential ($azureApplicationId, $password) 
$access = Login-AzureRmAccount -Credential $creds -ServicePrincipal -TenantId $tenantId 
} 

Вы можете видеть, что Логин-AzureRmAccount имеет -servicePrincipal переключатель включен

Смежные вопросы