我正在尝试将一组标记应用于特定资源组,但它似乎针对订阅中的所有vms。我确定我做的事情很傻,但已经在这里待了好几个小时,现在我的头开始疼了。
我的代码如下。
基本上抓取资源组并在每个vm的资源组标记内。
$rgs = Get-AzureRmResourceGroup | where {$_.ResourceGroupName -like 'Linux-*'}
$rgs | Format-Table
foreach ($VMObjects in $rgs)
{
$VMObjects = Get-AzureRmVM
ForEach($vmobject in $vmobjects)
{
$tags2 =$VMObject.tags
$tags2 += @{ShutdownSchedule_Mis = "20:00->15:00" }
Set-AzureRmResource -ResourceName $vmobject.Name -ResourceGroupName $vmobject.ResourceGroupName -ResourceType "Microsoft.Compute/virtualMachines" -Tag $tags2 -Force -Verbose
}
}
提前致谢...
答案 0 :(得分:1)
您正在重新定义自己的变量$VMObjects
,我不认为这是您打算做的。您还忘记将Get-AzureRmVm
范围限定为当前资源组。我会这样做。
Get-AzureRmResourceGroup | Where-Object {$_.ResourceGroupName -like 'Linux-*'} | ForEach-Object {
$VMObjects = Get-AzureRmVM -ResourceGroupName $_.ResourceGroupName
ForEach ($vmobject in $vmobjects) {
$tags2 = $VMObject.tags
$tags2 += @{ShutdownSchedule_Mis = "20:00->15:00" }
Set-AzureRmResource -ResourceName $vmobject.Name -ResourceGroupName $vmobject.ResourceGroupName -ResourceType "Microsoft.Compute/virtualMachines" -Tag $tags2 -Force -Verbose
}
}