从CSV分配标签

时间:2017-12-20 21:29:58

标签: powershell csv azure

我正在尝试将标签更新为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
}

看不出我出错的地方。帮助:)

2 个答案:

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