自动启动策略要求您在启用策略后明确选择 VM 并从其上下文菜单中应用该策略。这样您就不会轻易遇到不需要的虚拟机意外自动启动并导致意外支出的情况。
有关详细信息,请参阅以下文章:
https://azure.microsoft.com/en-us/updates/azure-devtest-labs-schedule-vm-auto-start/
更新:
你可以试试下面的PS功能。请注意,标签集合必须全部替换。这就是为什么您会看到确保仅附加到集合或更改现有值(如果已经存在)的逻辑。否则,您将删除其他标签。
function Enable-AzureDtlVmAutoStart
{
[CmdletBinding()]
param(
[string] $ResourceId,
[switch] $AlwaysOn
)
$autoStartOnTagName = 'AutoStartOn'
$alwaysOnTagName = 'AlwaysOn'
$labVm = Get-AzureRmResource -ResourceId $ResourceId
$tags = $labVm.Tags
# Undefined tags collection can happen if the Lab VM never had any tags set.
if (-not $tags)
{
$tags = @(@{},@{})
}
# Update the tags if they already exist in the collection.
$tags | % {
if ($_.Name -eq $autoStartOnTagName)
{
$_.Value = $true
}
if ($_.Name -eq $alwaysOnTagName)
{
$_.Value = $true
}
}
# Otherwise, create new tags.
if (-not ($tags | ? { $_.Name -eq $autoStartOnTagName }))
{
$tags += @{Name=$autoStartOnTagName;Value=$true}
}
if (-not ($tags | ? { $_.Name -eq $alwaysOn }))
{
$tags += @{Name=$alwaysOnTagName;Value=$AlwaysOn}
}
Set-AzureRmResource -ResourceId $ResourceId -Tag $tags -Force
}