使用混合 Runbook 停止/启动 Azure VM

使用混合 Runbook 停止/启动 Azure VM

我目前有按计划停止/启动虚拟机的运行手册,但最近运行手册启动虚拟机的操作已停止,因为完成所需的时间太长。出现以下消息 -

该作业已停止,因为它已达到作业执行时间超过 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

    }

}

谢谢,

相关内容