azure 无法将“System.Object[]”转换为参数“Name”所需的类型“System.String”,不支持指定的方法,At line:1 char:35

zf9nrax1  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(265)

我将批量更新CSV文件中列出的特定资源的标签。但是得到标题中的错误。有什么想法我可以转换成字符串吗?
CSV示例:
| 资源名称|资源组|
| --------------|--------------|
| vm10| rg01|
| vm11| RG02|
验证码:

$ResourceList = Import-Csv 'C:\Users\43263\Desktop\resources.csv'

$tags = @{"DeptNumber"="123G"; "OwnerEmail"="virdi@mail.com"}

$getresource = Get-AzResource -Name $ResourceList.ResourceName -ResourceGroup $ResourceList.ResourceGroup

ForEach ($Resource in $ResourceList.ResourceName){
New-AzTag -ResourceId $getresource.id -Tag $tags
}
31moq8wy

31moq8wy1#

您需要循环遍历CSV中的每一行,并分别查询每一个资源。此外,您应该为New-AzTag -ResourceId使用的属性值是.ResourceId而不是.Id

$tags = @{
    DeptNumber = '123G'
    OwnerEmail = 'virdi@mail.com'
}

Import-Csv 'C:\Users\43263\Desktop\resources.csv' | ForEach-Object {
    try {
        $getAzResourceSplat = @{
            Name          = $_.ResourceName
            ResourceGroup = $_.ResourceGroup
            ErrorAction   = 'Stop'
        }

        $resource = Get-AzResource @getAzResourceSplat
        New-AzTag -ResourceId $resource.ResourceId -Tag $tags
    }
    catch {
        Write-Warning $_
    }
}
lsmepo6l

lsmepo6l2#

我已经在我的环境中复制了,并得到了预期的结果如下:

CSV文件:

然后使用以下命令:

$r = Import-Csv "C:\Users\\Downloads\emo1.csv"
$T = @{ID='0008'
 Name='rithwik'}
ForEach ($e in $r){
    $res= Get-AzResource -Name $e.ResourceName -ResourceGroup $e.ResourceGroup
    $x= $res.ResourceId | Out-String
}
ForEach ($v in $res){
    New-AzTag  -ResourceId $v.ResourceId -Tag $T }

输出:

相关问题