隔离资源组并应用标记

时间:2018-01-23 14:17:11

标签: powershell azure

我正在尝试将一组标记应用于特定资源组,但它似乎针对订阅中的所有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
        }
    }

提前致谢...

1 个答案:

答案 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
    }
}