Azure Runbook,用于通过多个标记查询重新启动VM

时间:2018-04-23 13:06:23

标签: azure tags reboot runbook

我知道如何为具有一个标记的VM重新启动/安排重新启动。但是,我很难找到如何根据多个标签的存在重新启动VM。这可能吗?

例如: 如果VM有Tag 1 = True且Tag 2 = True,那么我希望它重新启动。 如果任一标记为false,请不要重新启动。 如果缺少任一标记,请不要重新启动。

1 个答案:

答案 0 :(得分:0)

您是否想要使用Azure Runbook重新启动具有某些标记的VM?

如果我是对的,也许您可​​以使用此脚本来执行此操作:

$connectionname = "AzureRunAsConnection"
try
{
    $servicePrincipalConnection=Get-Automationconnection -Name $connectionname
    Login-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
    }
}

$VMs = Get-AzureRMVm | Where {$_.Tags.keys -contains "Tier" -and $_.Tags.Values -eq "2" -and $_.Tags.Values -eq "1"} | select Name, ResourceGroupName, Tags
ForEach ($vm in $vms)
{
    $VMStatus2 = Get-AzureRMVM -Name $VM.Name -ResourceGroupName $VM.ResourceGroupName -Status

    $VMName = $VM.Name
    $VMRG = $VM.ResourceGroupName
    $VMPS = $VMStatus2.Statuses[1].DisplayStatus
        If ($VMPS-eq "VM Running")
            {
                Restart-AzureRMVM -Name $VMName -ResourceGroupName $VMRG -force
                "$VMName is restarting"
            }
}

您可以使用该脚本列出标记密钥包含Tier且值为12的虚拟机。

以下是我的截图:

enter image description here

希望这有帮助。