Azure 获取源VM标签信息并更新到目标VM

说明:
本文档涉及两个脚本
1.获取当前订阅所有VM标签信息
2.将获取到标签信息更新到目标VM。

1、获取标签信息
Powshell脚本
本脚本将会自动获取当前订阅下所有VM的标签信息并导入到vm_tags.csv文件中。


# 登录到 Azure
Connect-AzAccount -UseDeviceAuthentication -EnvironmentName AzureChinaCLoud

# 选择订阅
Select-AzSubscription -SubscriptionId ba150bd3-0b18-4be5-b5b8-456cec6d4ef5


# 安装Az module
#Install-Module -Name Az -Scope CurrentUser -Force

# 获取所有的 VM
$vms = Get-AzVM

# 初始化一个空的结果数组
$results = @()

# 对每一个 VM 获取其标签并添加到结果数组
foreach ($vm in $vms)
{
    $vmName = $vm.Name

    # 获取 VM 的所有标签
    $tags = $vm.Tags

    # 对于每一个标签,创建一个包含 标签名称 和 标签值 的对象,并添加到结果数组
    foreach ($tag in $tags.Keys)
    {
        $result = New-Object PSObject -Property @{
            "VMName" = $vmName
            "TagKey" = $tag
            "TagValue" = $tags[$tag]
        }
        
        $results += $result
    }
}

# 导出结果数组到 CSV 文件
$results | Export-Csv -Path "vm_tags.csv" -NoTypeInformation -Encoding UTF8

2、修改vm_tags.csv文件内容
将vm_tags.csv文件中VMName名称对应替换为目标的VMName
1.使用记事本打开vm_tags.csv
2.更改VMName名称
3.选择“另存为”
4.编码选择“UTF-8”#对应导入脚本时指定的UTF8编码,可避免出现中文乱码问题。

3、将获取到标签信息更新到VM中。
Powshell脚本
本脚本将会自动将vm_tags.csv文件中的标签信息更新到当前订阅下对应VM中。

# 选择订阅
Select-AzSubscription -SubscriptionId cddd023e-f5e8-4a21-81d4-8494dee232eb

# CSV文件放在脚本所在的路径中
$csvData = Import-Csv -Path ./vm_tags.csv -Encoding UTF8

# 循环遍历CSV中的每一行
foreach ($row in $csvData) {
    # Extract the VM name and tag information
    $vmName = $row.VMName
    $tagKey = $row.TagKey
    $tagValue = $row.TagValue

    # 将虚拟机标记
    $vm = Get-AzVM -Name $vmName

    # 如果不存在,跳过这一行
    if ($null -eq $vm) {
        Write-Warning "Couldn't find VM with name $vmName, skipping..."
        continue
    }

    # 如果虚拟机没有任何标签,只需为其创建一个新的散列表
    if ($null -eq $vm.Tags) {
        $vm.Tags = @{}
    }

    # 添加或覆盖新标签
    $vm.Tags[$tagKey] = $tagValue

    # 用新标签更新虚拟机
    Update-AzVM -ResourceGroupName $vm.ResourceGroupName -VM $vm
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值