如何从Azure Powershell重新启动Azure应用程序服务

时间:2017-11-15 02:23:47

标签: powershell azure azure-web-sites

如何从Azure的ARM订阅中的自动化帐户中的Runbook中运行的Azure的Powershell中重新启动AppService?

我认为方法是:

Restart-AzureWebsite -Name "your-appservice-name"

但是得到了:

Restart-AzureWebsite : No default subscription has been designated.
Use select-AzureSubscription -Default #<subscriptionName> to set the default subscription.

Azure PowerShell中没有可用的Restart-AzureRmWebApp。

以下所有组合都会导致一堆其他错误消息:

$Cred = Get-AutomationPSCredential -Name 'your-credentials-name'
Add-AzureAccount -Credential $Cred
Add-AzureRMAccount -Credential $Cred
Get-AzureSubscription –SubscriptionName 'your-subscription-name' | Select-AzureSubscription -Default
Restart-AzureWebsite -Name "your-appservice-name"

2 个答案:

答案 0 :(得分:3)

  

Azure PowerShell中没有可用的Restart-AzureRmWebApp。

正如 Walter - MSFT 提到我们可以导入AzureRM.Websites,在此之前我们需要将AzureRM.Profile更新为 4.0 ,您可以参考更多细节截图。

enter image description here

在此之前,我们可以创建Azure AD服务主体本地。 如何创建服务主体我们可以参考这个document

 Login-AzureRmAccount
 $sp = New-AzureRmADServicePrincipal -DisplayName exampleapp -Password "password"
 Sleep 20
 New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $sp.ApplicationId

在Runbook中运行Restart-AzureRmWebApp命令。

$azureAplicationId ="Application Id"
$azureTenantId= "tenant Id"
$azurePassword = ConvertTo-SecureString "password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Add-AzureRmAccount -Credential $psCred -TenantId $azureTenantId  -ServicePrincipal 
Restart-AzureRmWebApp -ResourceGroupName "ResourceGroup" -Name "WebApp Name" 

enter image description here

答案 1 :(得分:0)

此Powershell脚本在Azure自动化Runbook中运行:

Invoke-AzureRmResourceAction -ResourceGroupName "<your-resource-group-name>" -ResourceName "<your-resource-name>" -ResourceType 'Microsoft.Web/sites' -Action 'Restart' -Force

修改

然而下一个剧本可能更好;它依赖于@Tom Sun的上述答案,即

  1. 升级模块 - 转到自动化帐户/模块/更新Azure模块。
  2. 导入AzureRm.Websites模块 - 转到自动化帐户/模块/浏览图库。
  3. 在自动化帐户/凭据下创建。

    $Cred = Get-AutomationPSCredential -Name '<your-credentials>'
    Add-AzureRMAccount -Credential $Cred
    
    Get-AzureRmSubscription –SubscriptionName '<your-subscription-name>' | Select-AzureRmSubscription
    
    Restart-AzureRmWebApp -ResourceGroupName "office" -Name "<your-appservice-name>"