从 excel/csv 文件更新 azure 上的标签

问题描述 投票:0回答:1

我目前有一个 Powershell 脚本,可以将标签从 azure 导出到 CSV 文件,我想要做的是更新此文件上的一些值,然后通过 Powershell 使用此文件来更新 azure 上的标签。

下面是excel文件的测试示例,名称为资源组 File example

在这种情况下,标签用于资源组,标签具有不同的值,我还没有找到一个好的解决方案来对这些值进行大量更新,例如标签可能具有 X、Y、Z、K 作为值,但是我需要添加 T 并用 W 替换一些 Y。

我发现批量更新标签是更新具有相同值的所有标签,或者单独更新每个资源组的标签,这不是解决方案,因为会有数百个资源组。

对此的任何帮助将不胜感激。

尝试了多个脚本以及 Microsoft 文档中的 cmdlet,但是这些不能满足我的需要。

azure powershell csv tags
1个回答
0
投票

您可能采取的一种方法是使用模板引擎。如果您能以某种方式提出一个模板来描述要在 .csv 文件的单个记录上完成的转换,那么剩下要做的就是将 csv 文件应用到模板。

这非常简单,但它并不能满足您进行批量更新的需求。批量更新标签有何重要意义?是否有效利用机器资源?流程的可靠性吗?

如果您确实决定采用模板引擎路线,我有一个非常小的模板引擎,它是由 CSV 数据驱动的。如下:

<#
.NOTES
    Script: Expand-Csv    Rev:  3.2
    Author: DGC           Date: 2-21-19
.SYNOPSIS
    Generates multiple expansions of a template,
    driven by data in a CSV file.
.DESCRIPTION
    This function is a table driven template tool. 

    It generates output from a template and
    a driver table.  The template file contains plain
    text and embedded variables.  The driver table 
    (in a csv file) has one column for each variable, 
    and one row for each expansion to be generated.
#>
function Expand-csv {
    [CmdletBinding()]
    Param (
       [Parameter(Mandatory=$true)] [string] $driver,
       [Parameter(Mandatory=$true)] [string] $template
    )
    Process {
       Import-Csv $driver | % {
           $_.psobject.properties | % {Set-variable -name $_.name -value $_.value}
           Get-Content $template | % {$ExecutionContext.InvokeCommand.ExpandString($_)} 
       }
    }
}

这是模板引擎的一个简单的、没有任何装饰的实现。还有许多其他可用的模板引擎,其中一些更复杂。如果您想查看这个演示的几个演示来展示其功能,您可以访问我在 github 上的存储库:github.com/dcressey/expand-csv

© www.soinside.com 2019 - 2024. All rights reserved.