csv 使用列表获取Azure资源

k3fezbri  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(115)

我正在尝试批量抓取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
}

当我运行这段代码时,什么也没发生。我错过了什么?还有别的办法吗

zpjtge22

zpjtge221#

您的代码中的$List变量有问题。如果你想检查和过滤.csv文件中的一个列,你需要过滤$List与特定的列,即$List.ResourceName,而不是过滤整个.csv文件。由于此冲突,您无法检索任何输出。
有两种方法可以修改代码:
1.修改for-each循环如下:

$List= Import-Csv "C:\resourceslist.csv"  
foreach ($resource  in  $List.ResourceName)
{
 $resource = Get-AzResource -Name $resource
 $rgtags = $resource.Tags 
 $rgtags.Remove("Manager")           
 $rgtags.Remove("DepartmentNumber") 
 $rgtags += @{OwnerEmail = "pita@mail.com" }
 Set-AzResource -ResourceId $resource.resourceid -Tag $rgtags -Force -AsJob }
  • 或者 *

1.正如@圣地亚哥Squarzon所建议的,使用 "-in”$_.Resource.Name -in $List.ResourceName}"-contains”$_.Resource.Name -contains $List.ResourceName}函数如下:

$List= Import-Csv "C:\resourceslist.csv"
$Resources = (Get-AzResource | Where-Object {$_.Resource.Name -contains $List.ResourceName})
$Resources.Count
foreach ($resource in $resources){
        $rgtags = $resource.Tags
        $rgtags.Remove("Manager")
        $rgtags.Remove("DepartmentNumber")
        $rgtags += @{OwnerEmail = "pita@mail.com" }
        Set-AzResource -ResourceId $resource.resourceid -Tag $rgtags -Force -AsJob
}

输出:

  • 注意:* 您也可以使用update-Aztag PowerShell命令来更新Azure资源的标签。

相关问题