我目前有按计划停止/启动虚拟机的运行手册,但最近运行手册启动虚拟机的操作已停止,因为完成所需的时间太长。出现以下消息 -
“该作业已停止,因为它已达到作业执行时间超过 3 小时的公平份额限制。对于长时间运行的作业,建议使用混合 Runbook 工作器。混合 Runbook 工作器对 Runbook 的执行时间没有限制。“
我从来没有用过混合运行手册之前,我有个问题 - 混合运行手册可以用来停止/启动多个 Azure VM 吗?我找不到任何相关信息,看起来混合方法用于提取信息或在 VM 内部执行操作。
我最终希望管理虚拟机资源(停止/启动虚拟机)来自在 Azure VM 中如果可能的话。请参阅下面的当前运行手册:
Write-Output "------------------------ Authentication ------------------------"
Write-Output "Logging in to Azure ..."
$ConnectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$Conn = Get-AutomationConnection -Name $ConnectionName
# Logging into Azure
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
Write-Output "Successfully logged in to Azure."
}
catch
{
if (!$Conn)
{
$ErrorMessage = "Connection $ConnectionName not found."
throw $ErrorMessage
}
else
{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
Write-Output "------------------------ Starting Virtual Machines ------------------------"
## Sequence VMs are started
$Computers = @(
'virtualmachines(x11)'
)
foreach($c in $Computers)
{
$AzResource = Get-AzResource -Name $c -ResourceType "Microsoft.Compute/virtualMachines"
if($null -ne $AzResource)
{
Write-Output "Starting virtual machine..." + $c
Start-AzVM -ResourceGroupName $AzResource.ResourceGroupName -Name $c
# Pauses 4 minutes before continuing loop
Start-Sleep -Seconds 240
}
else
{
throw "Virtual machine not found:" + $c
}
}
谢谢,