我想在午夜停止我的应用程序服务,并想在早上启动它们。所以我遇到了两件事,即Runbook和Webjobs。所以首先我在资源组中加入了一个可启动/停止服务的Runbook。但是当我测试时出来,我遇到了一个错误-
当我尝试使用webjob时,我也使用了code from here,但是我看不到结果。webjob作为脚本工作,但实际上是在启动/停止我不知道的服务我是Powershell脚本的新手,所以我不知道在哪里对代码进行必要的更改。我不知道我是对还是错,请帮助我。谢谢。
答案 0 :(得分:0)
如果要使用Azure Runbook管理Azure ARM资源,可以在Azure自动化帐户中创建Run As accounts
。当我们创建它时,它将在Azure Active Directory(AD)中创建一个新的服务主体用户,并在订阅级别将该贡献者角色分配给该用户。有关更多详细信息,请参阅document和document。
例如
创建Run As accounts
a。搜索并选择自动化帐户。
b。在“自动化帐户”页面上,从列表中选择您的自动化帐户。
c。在左侧窗格中,在帐户设置部分中选择帐户运行方式。
d。根据您所需的帐户,选择 Azure运行方式帐户或 Azure Classic运行方式帐户。 e。根据感兴趣的帐户,使用“添加 Azure运行方式”或“添加 Azure经典运行方式帐户”窗格。查看概述信息后,单击创建。
脚本
workflow START_STOP_APP_SERVICE_BY_RESOURCE
{
Param(
[Parameter (Mandatory= $true)]
[bool]$Stop,
[Parameter (Mandatory= $true)]
[string]$ResourcegroupName
)
try
{
# use Azure As Account to log in Azure
$servicePrincipalConnection=Get-AutomationConnection -Name "AzureRunAsConnection"
Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$status = 'Stopped'
if ($Stop)
{
$status = 'Running'
}
# Get Running WebApps (website_Processings_Running)
$website_Processings_Running = Get-AzureRMWebAPP -ResourceGroupName $ResourcegroupName | where-object -FilterScript{$_.state -eq $status }
foreach -parallel ($website_Processing In $website_Processings_Running)
{
if ($Stop)
{
$result = Stop-AzureRmWebApp -ResourceGroupName $ResourcegroupName -Name $website_Processing.Name
if($result)
{
Write-Output "- $($website_Processing.Name) shutdown successfully"
}
else
{
Write-Output "+ $($website_Processing.Name) did not shutdown successfully"
}
}
else
{
$result = Start-AzureRmWebApp -ResourceGroupName $ResourcegroupName -Name $website_Processing.Name
if($result)
{
Write-Output "- $($website_Processing.Name) start successfully"
}
else
{
Write-Output "+ $($website_Processing.Name) did not started successfully"
}
}
}
}