You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell读取Azure Resourcegroup中VM并按编号增减创建新VM

基于现有Azure VM编号批量创建新VM的PowerShell方案

1. 提取现有VM编号并生成新名称

先从已有的VM名称中解析出末尾的数字编号,再计算递增/递减后的新编号,生成符合命名规则的新VM名称:

# 已获取的现有VM名称列表
$existingVMs = @("VM-XXXXX-BB-6", "VM-XXXXX-BB-7")

# 提取所有VM的末尾数字编号
$vmNumbers = $existingVMs | ForEach-Object {
    [int]($_ -split "-")[-1]
}

# 生成递增的新编号(最大编号+1、+2)
$newIncrementNumbers = (($vmNumbers | Measure-Object -Maximum).Maximum)..(($vmNumbers | Measure-Object -Maximum).Maximum + 1)
# 生成递减的新编号(最小编号-2、-1)
$newDecrementNumbers = (($vmNumbers | Measure-Object -Minimum).Minimum - 2)..(($vmNumbers | Measure-Object -Minimum).Minimum - 1)

# 生成新VM名称(以递增为例,递减替换变量为$newDecrementNumbers即可)
$newVMNames = $newIncrementNumbers | ForEach-Object {
    "VM-XXXXX-BB-$_"
}

2. 批量创建新VM

如果要复用现有VM的配置(如规格、网络、存储类型),可以基于现有VM的配置模板批量创建:

# 替换为你的资源组名称
$resourceGroupName = "你的资源组名称"
# 获取源VM的配置(取现有VM中的任意一台作为模板)
$sourceVM = Get-AzVM -ResourceGroupName $resourceGroupName -Name $existingVMs[0]

# 遍历新VM名称逐个创建
foreach ($vmName in $newVMNames) {
    # 复制源VM配置并修改名称等关键属性
    $newVM = $sourceVM.Clone()
    $newVM.Name = $vmName
    $newVM.StorageProfile.OsDisk.Name = "$vmName-osdisk"
    $newVM.StorageProfile.OsDisk.CreateOption = "FromImage" # 若需使用自定义镜像,可替换为对应参数
    
    # 执行创建操作
    New-AzVM -ResourceGroupName $resourceGroupName -VM $newVM -Location $sourceVM.Location
}

关键注意事项

  • 确保已安装Azure PowerShell模块并登录:Install-Module -Name Az.Compute -Force、Connect-AzAccount
  • 创建前验证新VM名称未被占用,避免命名冲突导致失败
  • 若需自定义配置(如不同VM规格、网络子网),可直接修改$newVM对象的对应属性
  • 递减编号时需确认结果符合业务命名规范,避免出现负数或无效编号

内容的提问来源于stack exchange,提问作者Clinton Van Axel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:22:26