Существует несколько различных способов сделать это, и некоторые из них будут зависеть от версий модуля Azure-Runbook, которые у вас есть.
- Вам необходимо настроить пользователя как пользователя 'RunAsConnection'
- Чтобы получить соединение, вы можете использовать командлет: Get-AutomationConnection
- Затем, чтобы добавить аутентифицированную учетную запись, вы используете: Add-AzureRmAccount
- Если у вас несколько подписок, вам нужно будет выбрать используемую подписку: Select-AzureRmSubscription
- Наконец, используйте Restart-AzureRmWebApp для перезапускавеб-приложение.
Если вы установите $result= Restart-AzureRmWebApp
, если $result
равно нулю, то оно не будет работать, в противном случае вы увидите состояние работающего веб-приложения.Например.$result.State = "Running"
, если он работал успешно.
Чтобы сделать это по расписанию : перейдите в свою Runbook> Расписания> Добавить расписание.
Добавьте входные параметры и выберите / создайте повторяющееся расписание.Нажмите Ok, и все готово!
*** Если вы используете параметр для вашего webAppName, вы можете повторно использовать runbook и просто добавить разные расписания с разными входными параметрами
Пример кода.
try
{
$servicePrincipalConnection= Get-AutomationConnection -Name "AzureRunAsConnection"
# Logging in to Azure
$account = Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
Select-AzureRmSubscription -SubscriptionName "Azure subscription name"
$result = Restart-AzureRmWebApp `
-ResourceGroupName "Resource Name"
-Name "Name of webapp you want to restart"
if($result)
{
$state = $result.State
Write-Output ("Web app restarted and is now $state") #State should be Running at this point
}
else
{
Write-Output ("Web app did NOT restart")
}
}
catch
{
Write-Output ("Web app did NOT restart")
throw $_.Exception
}