Ошибка «Не найдена подписка в контексте» при вызове командлетов Azure Powershell - PullRequest
1 голос
/ 11 марта 2020

Я пытаюсь написать несколько простых Powershell сценариев для остановки, запуска и перезапуска нашего Azure веб-приложения. Я вижу, что есть командлеты , называемые Stop-AzWebApp, Start-AzWebApp и Restart-AzWebApp, которые делают это. Проблема в том, что всем им требуется параметр с именем DefaultProfile типа Microsoft. Azure .Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer . Как мне справиться с этим?

Я искал решения, но это сбивает с толку, поскольку кажется, что есть несколько способов сделать это, включая вызов Connect-AzAccount, но это требует нескольких параметров (и я не знаю, какие из них мне нужно предоставить).

Вот ошибка, которую я получаю, когда вызываю Get-AzSubscription из нашей сборки TFS.

enter image description here

Вот ошибка, которую я получаю при вызове Stop-AzWebApp из нашей сборки TFS.

enter image description here

No subscription found in the context Please ensure that the credentials you provided are authorized to access the Azure subscription then run Connect-AzAccount to login

Вот сценарий PS, который я использую.

$ResourceGroupName = "MyResourceGroup"
$Name = "MyWebAppName"

"Stopping web application " + $Name

"ResourceGroupName: " + $ResourceGroupName
"Name: " + $Name

$SubscriptionId = "xxxx-xxxx-xxxx-xxxx"
"SubscriptionId is: " + $SubscriptionId

$Subscription = Get-AzSubscription -SubscriptionId $SubscriptionId
"Subscription : " + $Subscription

Stop-AzWebApp -ResourceGroupName $ResourceGroupName -Name $Name

Какой самый простой способ запустить, остановить и перезапустить веб-приложение Azure?

1 Ответ

1 голос
/ 12 марта 2020

Из-за ошибки вам нужно запустить Connect-AzAccount для входа в систему azure powershell, но в TFS вы не можете использовать интерактивный способ входа в систему, поэтому вы можете использовать службу Основной для входа, это неинтерактивный способ.

Пожалуйста, следуйте инструкциям ниже.

1. Зарегистрируйте приложение AD в azure ad , затем получить значения для входа в систему и создать новый секретный ключ приложения .

2. Перейдите к подписке на портале -> Access control (IAM) -> Add role assignment -> Найдите имя приложения AD и добавьте его в качестве роли, например Owner/Contributor, см. эту ссылку . enter image description here

3.В своем сценарии используйте команду ниже, чтобы войти в систему, вы можете получить значения на шаге 1, а затем выполнить команду, например, Stop-AzWebApp, она будет работать нормально .

$azureAplicationId ="<Application-ID>"
$azureTenantId= "<Tenant-ID>"
$azurePassword = ConvertTo-SecureString "<Client-secret>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal 
Set-AzContext -Subscription "<Subscription-id>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...