脚本实现了对于单个云服务中的虚拟机批量开机的功能,并通过循环检测虚拟机状态来判断是否有未成功开机的情况,针对这种情况会再次尝试开机,最终保证虚拟机全部成功开启。
脚本内容如下;
$cloudServiceName = "<cloudservice name>";
$VMNames= "VM Name 1", "VMName 2", "VM Name 3","VM Name 4", "VM Name n";
$CheckedVM = New-Object System.Collections.ArrayList;
while($true)
{
foreach($vmNamein $VMNames)
{
# check if the VM is already checked
if ($CheckedVM.Contains($vmName))
{
continue;
}
# get the VM object
$vm = Get-AzureVM -ServiceName$cloudServiceName -Name$vmName;
if ($vm.Status -eq "StoppedDeallocated")
{
# if the VM is still stopped(Deallocated), trystart it again
Start-AzureVM -ServiceName$cloudServiceName -Name$vmName;
} else {
# if the VM is not in stopped(Deallocated)status, meaning that it's starting or started, so skip it
$CheckedVM.Add($vmName);
}
}
# if all VMs have been checked, quit while loop
if ($CheckedVM.Count -eq $VMNames.Count)
{
break;
}
}
说明:
要修改的就是黄色高亮的地方,分别是云服务名称($cloudServiceName)和虚拟机的名字($VMNames),虚拟机名字这里,想开启云服务下的哪几台虚拟机就写对应这几台的名字,都是这个云服务下的就行,需要的话,也可以部署到Automation中进行自动开机。
脚本执行很快,开启4台虚拟机只用了不到5分钟: