[英]Azure Powershell cmdlets - Requested value 'enable' was not found
[英]"No subscription found in the context" error when invoking Azure Powershell cmdlets
我正在嘗試編寫一些簡單的Powershell腳本來停止、啟動和重新啟動我們的Azure Web 應用程序。 我可以看到有所謂的cmdlet Stop-AzWebApp
, Start-AzWebApp
和Restart-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.