我正在尝试检查已设置为true的RG中的标记,然后对于RG中的那些资源(vms)(当前设置为$ False)将其设置为true。我有一个更新脚本</ p>
尝试编写一个IF语句,它将拉出所有设置为true的标记,然后循环遍历vms并将它们上的标记设置为$ true,位置停留在循环上,if($ OverRide -eq $ true) ){ Get-AzureRmVM ..就我所知道的那样:)
$x = Get-AzureRmVm -name "ThisVM" -ResourceGroupName "ThisRG"
$tags = $x.Tags
$tags['Shutdown'] = "$True"
$UpdateTag = Set-AzureRmResource -Tag $tags $x
但是我如何从RG获取vms并将override设置为true,然后遍历每个vm并将其设置为false。
尝试编写一个IF语句,它将拉出所有设置为true的标记然后循环通过vms并将它们上的标记设置为$ true,位置停留在循环上,
if($OverRide -eq $true) {
Get-AzureRmVm -ResourceGroupname | Where-Object { $_.Tags['ShutdownSchedule'] -eq $false } |`
ForEach-Object { $tags = $_.Tags; $tags['ShutdownSchedule'] = $true; `
$_ | Set-AzureRmResource -Tag $tags }
希望更有意义
更新..
类似的东西,让所有RG与This-RG相似并获取RG名称,然后将其传递到循环中捕获所有vm的
$resourcegroup = get-AzureRmResourceGroup | where -FilterScript {
$_.ResourceGroupName -like "This-RG*"
}
$rgname = $resourcegroup | select resourcegroupname
Get-AzureRmVm | foreach ($rgname in $rgnames)
{
Where-Object { $_.Tags['Shutdown'] -eq $false } | ForEach-Object`
{ $tags = $_.Tags; $tags['Shutdown'] = $true; $_ | Set-AzureRmResource -Tag $tags }
}
答案 0 :(得分:1)
$resourceGroups = Get-AzureRmResourceGroups | Where-Object { $_.Tags['Shutdown'] -eq $false -and $_.Name -like 'This-RG*' }
$resourceGroups.ForEach({
$vms = Get-AzureRmVm -resourceGroup $_.Name
$vms.ForEach({
$tags = $_.Tags
$tags['Shutdown'] = $true;
Set-AzureRmResource -ResourceId $_.Id -Tag $tags
})
})
这会找到标记为shutdown
的所有资源组等于false,并将这些组内所有vms上的shutdown
标记更改为true