Войдите в Azure powershell с помощью Connect-AzureRmAccount в программе, запущенной в событии публикации после публикации - PullRequest
0 голосов
/ 26 октября 2018

У меня есть программа, которая использует следующий код (упрощенный)

        using (PowerShell powerInstance = PowerShell.Create()) 
        {

            powerInstance.AddScript("Set-ExecutionPolicy Unrestricted");


            powerInstance.AddScript("Connect-AzureRmAccount");
            powerInstance.Invoke();
        }

Это прекрасно работает, когда отображается всплывающее окно для ввода учетных данных.

Теперь я хочу, чтобы эта программа запускалась после того, как я опубликую свое веб-приложение в Azure. Для этого я добавил событие публикации после публикации в свой отдельный веб-проект, например:

  <Target Name="PostAzurePublish" AfterTargets="MSDeployPublish">
   <Exec Command="C:\MyProgram.exe"></Exec>  
  </Target>

Проблема здесь в том, что когда я публикую свое веб-приложение, программа, которая запускает команды powershell, запускается, но зависает бесконечно, и всплывающее окно входа в систему не отображается. Итак, я предполагаю, что он просто ожидает ввода учетных данных, но, поскольку диалоговое окно входа в систему никогда не отображается, оно зависает.

Есть ли простой способ, которым я могу получить диалог входа в систему, чтобы показать в этом сценарии?

1 Ответ

0 голосов
/ 27 октября 2018

Вы можете использовать Connect-AzureRmAccount команду PowerShell без интерактивного входа в систему. Все, что вам нужно использовать, это Принцип обслуживания для учетных данных для входа.

$applicationId = "<service prinicple application id>";
$securePassword = "<service prinicple password>" | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $applicationId, $securePassword
Connect-AzureRmAccount -ServicePrincipal -Credential $credential -TenantId "<your tenantid>"

Смотрите мой подробный ответ здесь

...