• How to create a batch of VMs with PowerShell


    Foreword

    When we do some test that need several VMs, we can use PowerShell script or CmdLets to implement what we want.

    Keywords

    PowerShell, New-AzureVMConfig, New-AzureProvisioningConfig, New-AzureVM, Get-AzureVM, Add-AzureDataDisk, Update-AzureVM

    Summary

    Detailed

    # Name of subscription

    $SubscriptionName = "CIETest01"

    # Name of storage account (where VMs will be deployed)

    $StorageAccount = "portalvhdstpb7xn5sd8cck"

    $VmNames=New-Object System.Collections.ArrayList

    $VmNames.Add("erictest001")

    $VmNames.Add("erictest002")

    function Provision-VM( [string]$VmName ) {

    Start-Job -ArgumentList $VmName {

    param($VmName)

    $Location = "China North"

    $InstanceSize = "Small" # You can use any other instance, such as Large, A6, and so on

    $AdminUsername = "ericwen" # Write the name of the administrator account in the new VM

    $Password = "Passw0rd" # Write the password of the administrator account in the new VM

    $Image = "0c5c79005aae478e8883bf950a861ce0__Windows-Server-2012-Essentials-20131018-enus" #Copy the ImageName property you get from Get-AzureVMImage

    # You can list your own images using the following command:

    # Get-AzureVMImage | Where-Object {$_.PublisherName -eq "User" }

    New-AzureVMConfig -Name $VmName -ImageName $Image -InstanceSize $InstanceSize |

    Add-AzureProvisioningConfig -Windows -Password $Password -AdminUsername $AdminUsername|

    New-AzureVM -Location $Location -ServiceName "$VmName" -Verbose

    }

    }

    # Set the proper storage - you might remove this line if you have only one storage in the subscription

    Set-AzureSubscription -SubscriptionName $SubscriptionName -CurrentStorageAccount $StorageAccount

    # Select the subscription - this line is fundamental if you have access to multiple subscription

    # You might remove this line if you have only one subscription

    Select-AzureSubscription -SubscriptionName $SubscriptionName

    # Every line in the following list provisions one VM using the name specified in the argument

    # You can change the number of lines - use a unique name for every VM - don't reuse names

    # already used in other VMs already deployed

    foreach($VmName in $VmNames)

    {

    Provision-VM $VmName

    }

    # Wait for all to complete

    While (Get-Job -State "Running") {

    Get-Job -State "Completed" | Receive-Job

    Start-Sleep 1

    }

    # Display output from all jobs

    Get-Job | Receive-Job

    # Cleanup of jobs

    Remove-Job *

    # Displays batch completed

    echo "Provisioning VM Completed"

    echo "Attach new data disk to VM"

    foreach($VmName in $VmNames){

    Get-AzureVM -ServiceName $VmName -Name $VmName -Verbose | Add-AzureDataDisk -CreateNew -DiskSizeInGB 10 -DiskLabel "main" -LUN 1 -Verbose | Update-AzureVM -Verbose

    }

    Conclusion

    Reference

    http://sqlblog.com/blogs/marco_russo/archive/2013/10/29/powershell-script-to-deploy-multiple-vm-on-azure-in-parallel-azure-powershell.aspx

  • 相关阅读:
    96. 不同的二叉搜索树
    95. 不同的二叉搜索树 II
    94. 二叉树的中序遍历
    93. 复原IP地址
    python-007(用户登录(三次机会重试))
    python-006求1-2+3-4+5.....99的所有数的和
    python006(求1-2+3-4+5.....99的所有数的和)
    python-005(1-100奇数和偶数)
    python-004(while循环)
    python-003(if...elif...else)
  • 原文地址:https://www.cnblogs.com/ericwen/p/3714823.html
Copyright © 2020-2023  润新知