【发布时间】:2018-04-23 13:06:23
【问题描述】:
我知道如何为具有一个标签的 VM 重新启动/安排重新启动。但是,我很难根据多个标签的存在找出如何重新启动 VM。这可能吗?
例如: 如果 VM 的 Tag 1=True 和 Tag 2=True,那么我希望它重新启动。 如果任一标签为假,请不要重新启动。 如果缺少任何一个标签,请不要重新启动。
【问题讨论】:
我知道如何为具有一个标签的 VM 重新启动/安排重新启动。但是,我很难根据多个标签的存在找出如何重新启动 VM。这可能吗?
例如: 如果 VM 的 Tag 1=True 和 Tag 2=True,那么我希望它重新启动。 如果任一标签为假,请不要重新启动。 如果缺少任何一个标签,请不要重新启动。
【问题讨论】:
您的意思是要使用 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 且值为1 和2 的VM。
这是我的截图:
希望这会有所帮助。
【讨论】: