簡體   English   中英

調用 Azure Powershell cmdlet 時出現“未在上下文中找到訂閱”錯誤

[英]"No subscription found in the context" error when invoking Azure Powershell cmdlets

我正在嘗試編寫一些簡單的Powershell腳本來停止、啟動和重新啟動我們的Azure Web 應用程序。 我可以看到有所謂的cmdlet Stop-AzWebAppStart-AzWebAppRestart-AzWebApp是做到這一點。 問題是它們都需要一個名為DefaultProfile的參數,類型為Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer 我如何掌握這個?

我四處尋找解決方案,但似乎很混亂,因為似乎有幾種方法可以做到這一點,包括調用Connect-AzAccount ,但這需要多個參數(我不確定我需要提供哪些參數)。

這是我從 TFS 構建調用Get-AzSubscription時得到的錯誤。

在此處輸入圖片說明

這是我從 TFS 構建調用Stop-AzWebApp時得到的錯誤。

在此處輸入圖片說明

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 Web 應用程序的最簡單方法是什么?

從報錯來看,你需要運行Connect-AzAccount來登錄azure powershell,但是在TFS中,你不能使用交互方式登錄,所以你的選擇是使用服務主體登錄,它是一種非交互方式.

請按照以下步驟操作。

1. 在 azure ad 中注冊一個 AD App ,然后獲取登錄值創建一個新的應用程序密鑰

2.在門戶中導航到您的訂閱 -> Access control (IAM) -> Add role assignment -> 搜索 AD 應用程序的名稱並將其添加為角色,例如Owner/Contributor ,請參閱此鏈接 在此處輸入圖片說明

3.在你的腳本中,使用下面的命令登錄,你可以在步驟1中獲取vaules,然后運行命令例如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>"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM