0

Я пытаюсь создать несколько vms в лазурном портале Resourcemanager с той же сетевой платой с использованием powershell. Но создается только одна виртуальная машина. когда я использую массив для этого исключения.Как создать несколько vms в лазурном портале resourcemanager с той же сетевой платой с использованием powershell

$i = 1; 
[System.Collections.ArrayList][email protected]() 
Do 
{ 
$i; 
switch($i){ 
{$vmName="Namenode"+$i} 
{$vmName="Namenode"+$i} 
default {$vmName="Datanode"+($i-2)} 
} 
$vmconfig=New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize 
$vmArray1.Add($vmconfig) 

$ I + = 1} До ($ я не -gt $ NumberOfVM) $ Vm = Set-AzureRmVMOperatingSystem -VM $ vmconfig -Windows -ComputerName $ vmArray1 -Credential $ credvm -ProvisionVMAgent -EnableAutoUpdate Но возникает исключение. Пожалуйста, дайте мне знать, как это решить.

+0

Вы должны сообщить, какое сообщение об исключении вы видите – Atf

ответ

1

Я не уверен, что это ваша ошибка ввода или нет. Ваша команда Set-AzureRmVMOperatingSystem не находится внутри цикла. Это означает, что он всегда будет работать только один раз. Помимо операционной системы, вам также необходимо предоставить исходное изображение, ОС-диск и сетевой интерфейс.

Я что-то написал для вас, и я проверил его в конце. Он создаст набор виртуальных машин в одной группе ресурсов и одной виртуальной сети. Если вам нужны виртуальные машины в разных группах ресурсов или VNet, вы можете переместить команды создания групп ресурсов или Vnet в цикл.

$credvm = Get-Credential 
$NumberOfVM = <the number of VM you want to create>; 
$ResourceGroupName = "<your resource group name>" 
$Location = "East Asia" 

## Storage 
$StorageName = "<your storage account name>" 
$StorageType = "Standard_GRS" 



# Resource Group, if resource group has been created comment this out. 
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location 


## Network 
$InterfaceName = "<your interface name>" 
$Subnet1Name = "Subnet1" 
$VNetName = "<your vnet name>" 
$VNetAddressPrefix = "10.0.0.0/16" 
$VNetSubnetAddressPrefix = "10.0.0.0/24" 

## Compute 
$vmSize = "Standard_A2" 

# Network 
$SubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $Subnet1Name -AddressPrefix $VNetSubnetAddressPrefix 
$VNet = New-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig 


$i = 1; 

Do 
{ 
    $i; 
    $vmName="Namenode"+$i 
    $vmconfig=New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize 

    $vm=Set-AzureRmVMOperatingSystem -VM $vmconfig -Windows -ComputerName $vmName -Credential $credvm -ProvisionVMAgent -EnableAutoUpdate 

    $OSDiskName = $vmName + "osDisk" 
    # Storage 
    $StorageAccount = New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName$i -Type $StorageType -Location $Location 
    ## Setup local VM object 
    $vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2012-R2-Datacenter -Version "latest" 
    $PIp = New-AzureRmPublicIpAddress -Name $InterfaceName$i -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod Dynamic 
    $Interface = New-AzureRmNetworkInterface -Name $InterfaceName$i -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PIp.Id 
    $VirtualMachine = Add-AzureRmVMNetworkInterface -VM $vm -Id $Interface.Id 
    $OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd" 
    $VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -Name $OSDiskName -VhdUri $OSDiskUri -CreateOption FromImage 

    ## Create the VM in Azure 
    New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine 
    $i +=1 
} 
Until ($i -gt $NumberOfVM) 
Смежные вопросы