我正在尝试批量抓取Azure资源并更改它们的标签。我有一个csv文件中的资源名称。
$List= Import-Csv "C:\Users\8792.csv"
$Resources = (Get-AzResource | Where-Object {$_.Resource.Name -eq $List})
$Resources.Count
foreach ($resource in $resources){
#$resource.Name
$rgtags = $resource.Tags
#depending on the tag to update, enter the removal value below
#$rgtags.Remove("DepartmentNumber")
$rgtags.Remove("Manager")
$rgtags.Remove("DepartmentNumber")
$rgtags.Remove("ApplicationName")
#update tag to be added to resource
#$rgtags += @{DepartmentNumber = "9r30" }
$rgtags += @{OwnerEmail = "pita@mail.com" }
Set-AzResource -ResourceId $resource.resourceid -Tag $rgtags -Force -AsJob
}
当我运行这段代码时,什么也没发生。我错过了什么?还有别的办法吗
1条答案
按热度按时间zpjtge221#
您的代码中的
$List
变量有问题。如果你想检查和过滤.csv
文件中的一个列,你需要过滤$List
与特定的列,即$List.ResourceName
,而不是过滤整个.csv
文件。由于此冲突,您无法检索任何输出。有两种方法可以修改代码:
1.修改
for-each
循环如下:1.正如@圣地亚哥Squarzon所建议的,使用 "-in”
$_.Resource.Name -in $List.ResourceName}
或 "-contains”$_.Resource.Name -contains $List.ResourceName}
函数如下:输出:
update-Aztag
PowerShell命令来更新Azure资源的标签。