Get-AzureAccount не находит учетные записи при запуске из C#

У меня есть следующий сценарий powershell ("azureaccounts.ps1"):

$accountExisted = @(Get-AzureAccount)
Write-Log $accountExisted.Count

Когда я запускаю его из Windows Powershell, он находит 5 учетных записей Azure.
Когда я запускаю его из CMD, он находит 5 учетных записей Azure. ("powershell azureaccounts.ps1" в cmd)

Но когда я запускаю скрипт из веб-приложения C#, он не находит никакой учетной записи.

С API-интерфейсом PowerShell:

PowerShell powerShell = PowerShell.Create();
powerShell.AddScript(@"C:\...\azureaccounts.ps1");
var results = powerShell.Invoke();

А также с объектом Process:

string sPowershellDir = @"C:\...\WindowsPowerShell\v1.0";
string sDeploymentScriptDir = @"C:\...\azureaccounts.ps1";
string sCommand = String.Format(@"powershell.exe -ExecutionPolicy ByPass -File {0}", sDeploymentScriptDir};
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + sCommand);
procStartInfo.UseShellExecute = false;
procStartInfo.WorkingDirectory = sPowershellDir;
Process oProcess = Process.Start(procStartInfo);

Одним из решений было бы выполнить Add-AzureAccount, но этот командлет запрашивает всплывающее окно, поэтому это не может произойти автоматически.

Какие-либо предложения?


person Mockingbird    schedule 24.12.2015    source источник


Ответы (1)


Когда вы выполняете из командной строки, вы наследуете предыдущие аутентификации, которые вы делали раньше. Возможно, вы прошли аутентификацию через всплывающее окно, которого теперь хотите избежать. С веб-приложением или новым процессом вы начинаете с процесса, который никогда не проходил проверку подлинности в вашей среде Azure, с точки зрения PowerShell.

Для автоматической аутентификации вы можете следовать тому, что описано в документации по адресу https://azure.microsoft.com/en-us/documentation/articles/resource-group-authenticate-service-principal/. Обратите внимание, что эта документация основана на модуле Azure V1+.

Тем не менее, идея та же. Обратите внимание, что если вы подключаетесь автоматически из 1 учетной записи, сценарий PowerShell ответит 1. Но я полагаю, вы хотите, чтобы этот сценарий выполнял другие действия.

person benjguin    schedule 24.12.2015