我正在尝试将标签更新为csv文件中的vm列表。 csv还包含资源组。
我可以让PowerShell读取csv,但是当我尝试在foreach-object中分配标签时,它会提示Process[0]
Import-Csv c:\temp\vm.csv -Header VMName,ResourceGroup
ForEach-Object {
$tags = (Get-AzureRMVM -Name $_.VMName -ResourceGroupName $_.ResourceGroup).Tags
$tags['ShutdownSchedule'] = "19:00->06:00,Saturday,Sunday,December 25,December 26,December 27,December 28,December 29,January 1"
$UpdateTag = Set-AzureRmResource -Tag $tags -Name $_.vmName -ResourceGroupName $_.ResourceGroup -ResourceType Microsoft.Compute/virtualMachines
}
看不出我出错的地方。帮助:)
答案 0 :(得分:0)
我们可以使用此powershell脚本来更新标记:
$c = Import-csv "D:\adtest\vm.csv" -header vmname, resourcegroup
foreach($a in $c){
$tags = (get-azurermvm -resourcegroupname $a.resourcegroup -name $a.vmname).tags
$tags['test1'] = "19:00->06:00,Saturday,Sunday,December 25,December 26,December 27,December 28,December 29,January 1"
$UpdateTag = Set-AzureRmResource -Tag $tags -Name $a.vmname -ResourceGroupName $a.resourcegroup -ResourceType Microsoft.Compute/virtualMachines -force
}
答案 1 :(得分:0)
但是当我尝试在foreach-object中分配标签时,它会提示Process [0]
如果我不想提示对话框确认更新操作,可以使用- force
$UpdateTag = Set-AzureRmResource -Tag $tags -Name $line.vmName -ResourceGroupName $line.ResourceGroup -ResourceType Microsoft.Compute/virtualMachines -Force
我也为此做了一个演示,它在我身边正常工作。
$csv = Import-Csv c:\temp\vm.csv -Header VMName,ResourceGroup
foreach($line in $csv)
{
$tags = (Get-AzureRMVM -Name $line.VMName -ResourceGroupName $line.ResourceGroup).Tags
$tags['ShutdownSchedule'] = "19:00->06:00,Saturday,Sunday,December 25,December 26,December 27,December 28,December 29,January 1"
$UpdateTag = Set-AzureRmResource -Tag $tags -Name $line.vmName -ResourceGroupName $line.ResourceGroup -ResourceType Microsoft.Compute/virtualMachines -Force
}
注意:我使用不带标题的csv文件
CSV文件格式:
tomtestvm, tomGroup
xxxxVm, xxxGroup