none
如何用powershell 去批量创建20台以上Windows虚拟机 RRS feed

  • 问题

  • 各位高手,如题,如何用powershell 去批量创建20台以上Windows虚拟机,具体内容,一个NSG,准入规则应用到子网,16位的VNet和24位的subnet,每一台VM都自带一个公共IP,不需要avilibitlyset,搜索出来的脚本都为asm模式下,arm的不多
    2019年5月24日 8:00

答案

  • Hi Tank Tou,

    建议通过以下 Azure PowerShell 脚本尝试快速部署 20 台虚拟机,根据需求修改变量与配置信息:

    # 指定订阅名称 
    $subscriptionName="test"; 
    # 指定用来保存虚拟机VHD的存储 
    $storageAccount="teststorage"; 
    # 创建一个数组用来保存虚拟机创建的配置信息 
    $vms=New-Object System.Collections.ArrayList; 
    # 获取虚拟机镜像列表 
    $images=Get-AzureVMImage; 
    # 获取第43个镜像的名称(Win Server 08 R2,可根据需要更改) 
    $imageName=$images[43].ImageName; 
    # 云服务的名称 
    $cloudServiceName="testcloud"; 
    # 设置默认的订阅以及默认订阅关联的存储账号 
    Select-AzureSubscription –SubscriptionName $subscriptionName –Default 
    Set-AzureSubscription -SubscriptionName $subscriptionName -CurrentStorageAccountName $storageAccount 
    # 执行循环,生成虚拟机配置数组,计数从0开始,到19结束,就会创建出Hcjse0,Hcjser1,Hcjser2....Hcjser19这些虚拟机 
    for($i=0;$i –le 19;$i++) 
    { 
        #Hcjser是创建的虚拟机名称的前缀 
        $vmName="testVM"+$i; 
    # 创建虚拟机的配置信息(虚拟机名称,虚拟机大小Small,虚拟机镜像名称,用户名,密码,虚拟网络子网名等等(可省略)) 
    # 可选的虚拟机InstanceSize有:ExtraSmall, Small, Medium, Large, ExtraLarge, A5, A6, A7, A8, A9, Basic_A0, Basic_A1, Basic_A2, Basic_A3, Basic_A4, Standard_D1, Standard_D2, Standard_D3, Standard_D4, Standard_D11, Standard_D12, Standard_D13, Standard_D14 
    $vm=New-AzureVMConfig –Name $vmName –InstanceSize Small –ImageName $imageName | add-AzureProvisioningConfig -Windows -AdminUsername huangcj -Password 1qaz2wsxE -TimeZone "China Standard Time" –DisableAutomaticUpdates | Set-AzureSubnet -SubnetNames 'Subnet-1'; 
        # 将配置信息添加到数组中用于最后一步命令 
        $vms.add($vm); 
    } 
    # 批量创建虚拟机,通过-VMs参数将之前创建好的虚拟机配置数组作为参数,并指定虚拟网络的名称以及地理位置参数和云服务名称 
    New-AzureVM -Location "China East" –ServiceName $cloudServiceName –VMs $vms -VNetName 'testvnet'

    • 已标记为答案 Tank Tou 2019年11月29日 2:55
    2019年5月29日 1:39

全部回复

  • Hi Tank Tou,

    由于您需要创建大量同样的虚拟机,便于您的创建与管理,建议您使用虚拟机规模集服务。利用虚拟机规模集,可以部署和管理一组相同的、自动缩放的虚拟机。 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率、内存需求或网络流量)进行自动缩放。 

    部署操作请参考使用 Azure PowerShell 创建虚拟机规模集
    2019年5月24日 8:19
  • 需求不是规模集,每一台服务器都不同的内容,但属于同一个项目,由于数量需求大,单台创建费时,所以才考虑脚本生成,但目前官网上面并没有给出类似的脚本,GitHub上面的也不太符合
    2019年5月28日 16:45
  • Hi Tank Tou,

    建议通过以下 Azure PowerShell 脚本尝试快速部署 20 台虚拟机,根据需求修改变量与配置信息:

    # 指定订阅名称 
    $subscriptionName="test"; 
    # 指定用来保存虚拟机VHD的存储 
    $storageAccount="teststorage"; 
    # 创建一个数组用来保存虚拟机创建的配置信息 
    $vms=New-Object System.Collections.ArrayList; 
    # 获取虚拟机镜像列表 
    $images=Get-AzureVMImage; 
    # 获取第43个镜像的名称(Win Server 08 R2,可根据需要更改) 
    $imageName=$images[43].ImageName; 
    # 云服务的名称 
    $cloudServiceName="testcloud"; 
    # 设置默认的订阅以及默认订阅关联的存储账号 
    Select-AzureSubscription –SubscriptionName $subscriptionName –Default 
    Set-AzureSubscription -SubscriptionName $subscriptionName -CurrentStorageAccountName $storageAccount 
    # 执行循环,生成虚拟机配置数组,计数从0开始,到19结束,就会创建出Hcjse0,Hcjser1,Hcjser2....Hcjser19这些虚拟机 
    for($i=0;$i –le 19;$i++) 
    { 
        #Hcjser是创建的虚拟机名称的前缀 
        $vmName="testVM"+$i; 
    # 创建虚拟机的配置信息(虚拟机名称,虚拟机大小Small,虚拟机镜像名称,用户名,密码,虚拟网络子网名等等(可省略)) 
    # 可选的虚拟机InstanceSize有:ExtraSmall, Small, Medium, Large, ExtraLarge, A5, A6, A7, A8, A9, Basic_A0, Basic_A1, Basic_A2, Basic_A3, Basic_A4, Standard_D1, Standard_D2, Standard_D3, Standard_D4, Standard_D11, Standard_D12, Standard_D13, Standard_D14 
    $vm=New-AzureVMConfig –Name $vmName –InstanceSize Small –ImageName $imageName | add-AzureProvisioningConfig -Windows -AdminUsername huangcj -Password 1qaz2wsxE -TimeZone "China Standard Time" –DisableAutomaticUpdates | Set-AzureSubnet -SubnetNames 'Subnet-1'; 
        # 将配置信息添加到数组中用于最后一步命令 
        $vms.add($vm); 
    } 
    # 批量创建虚拟机,通过-VMs参数将之前创建好的虚拟机配置数组作为参数,并指定虚拟网络的名称以及地理位置参数和云服务名称 
    New-AzureVM -Location "China East" –ServiceName $cloudServiceName –VMs $vms -VNetName 'testvnet'

    • 已标记为答案 Tank Tou 2019年11月29日 2:55
    2019年5月29日 1:39
  • 抱歉,如果用的manger disk,应该就不能这么写~
    2019年5月30日 16:42
  • Hi Tank Tou,

    建议参考文档 使用 PowerShell 从快照创建虚拟机 对此前的脚本进行托管磁盘设置的添加,可从 OS 磁盘的快照创建虚拟机。

    2019年5月31日 2:29