这里向大家介绍下如何使用powershell批量创建vm虚拟机,本博文中,我打算用powershell批量创建100台VM。

 

首先,从官网下载页面,下载并安装Windows Azure PowerShell:http://www.windowsazure.cn/zh-cn/downloads/#cmd-line-tools

 

安装完毕后以管理员身份运行,右键点击PowerShell图标然后选择以管理员身份运行执行命令Get-AzurePublishSettingsFile-Environment "AzureChinaCloud",通过打开的页面下载您的WindowsAzure Subscription的发布配置文件;(这些在之前的博文中都有详细描述)

wKiom1fWHaGyO0VsAAAjQ6BJO3E817.jpg-wh_50

在PowerShell中执行Import-AzurePublishSettingsFile“发布配置文件本地存放路径”

wKiom1fWHbHyppofAABRmk5SoJE776.jpg-wh_50

操作成功后,新建一个txt文档,将下面的代码拷贝进去(请将高亮的信息替换为您自己的部署信息),将后缀名修改为.ps1,例如我们将文件保存为vm.ps1

 

# 指定订阅名称

$subscriptionName="Internal-002";

 

# 指定用来保存虚拟机VHD的存储

$storageAccount="danielstorage";

 

# 创建一个数组用来保存虚拟机创建的配置信息

$vms=New-ObjectSystem.Collections.ArrayList;

 

# 获取虚拟机镜像列表

$p_w_picpaths=Get-AzureVMImage;

 

# 获取第43个镜像的名称(Win Server 08 R2

$p_w_picpathName=$p_w_picpaths[43].ImageName;

 

# 云服务的名称

$cloudServiceName="DanielVMBatchCreationTest";

 

# 设置默认的订阅以及默认订阅关联的存储账号

Select-AzureSubscription–SubscriptionName$subscriptionName–Default

Set-AzureSubscription-SubscriptionName$subscriptionName-CurrentStorageAccountName$storageAccount

 

# 执行循环,生成虚拟机配置数组,计数从2开始,到19结束,就会创建出DanBatchDep2,DanBatchDep3,DanBatchDep4....DanBatchDep19这些虚拟机

for($i=1;$i–le19;$i++)

{

    #DanBatchDep是创建的虚拟机名称的前缀

    $vmName="DanBatchDep"+$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–InstanceSizeSmall–ImageName$p_w_picpathName|add-AzureProvisioningConfig-Windows-AdminUsernamedaniel-Password1qaz2wsxE-TimeZone"China Standard Time"–DisableAutomaticUpdates|Set-AzureSubnet-SubnetNames'Subnet-1';

 

    # 将配置信息添加到数组中用于最后一步命令

    $vms.add($vm);

}

 

# 批量创建虚拟机,通过-VMs参数将之前创建好的虚拟机配置数组作为参数,并指定虚拟网络的名称以及地理位置参数和云服务名称

New-AzureVM-Location"China East"–ServiceName$cloudServiceName–VMs$vms-VNetName'DanielBatchDeployTest'

保存完成后,运行Azure Powershell,然后输入"& " +<刚刚保存的ps1脚本的文件路径(可以直接将脚本拖拽到Powershell界面中>,然后输入回车执行即可,下面是执行效果的截图:

 

wKioL1fWHdqCpA2AAABFBRc0XqY733.png-wh_50

wKiom1fWHduSqUCZAAB8e8j1dEg340.png-wh_50

wKiom1fWHeDA7LbpAAGPzZDC37s559.png-wh_50

wKioL1fWHebDpvdjAAG5cz8C4gE856.png-wh_50

 总共用了1小时不到,部署了100台虚拟机,效率还是很高的。