Azure PowerShell部署脚本运行极其缓慢,并且缺少配置选项

时间:2019-06-05 21:15:51

标签: azure powershell azure-rm

以下脚本可以正常运行,我可以看到它正在执行设计的任务(部署500个虚拟机),但是我从New-AzVM收到警告,告诉我它正在使用可以访问的最明智的存储帐户。我一直在旋转的虚拟机上遇到很多问题,而且它们的旋转速度非常慢(每小时大约10个速度),我想知道问题是否出在我无法在配置中指定一个存储帐户。

我已经做了很多Google搜索,仔细阅读了有关这些脚本的Microsoft文档,但是还没有找到指定我想要的配置的方法。

我正在使用的脚本是这样:

$rgn = "VolumetricTest"
$passwd = ConvertTo-SecureString "password" -AsPlainText -Force
$logincred = New-Object System.Management.Automation.PSCredential("xadminx",$passwd)
$vnet = Get-AzVirtualNetwork -Name volumetric-vnet -ResourceGroupName VolumetricTest 
$loc = "East US"
$nsg_rdp_in = New-AzNetworkSecurityRuleConfig -name "RDP_in" -Protocol Tcp -Direction Inbound -Priority 300 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
$nsg_rdp_out = New-AzNetworkSecurityRuleConfig -name "RDP_out" -Protocol Tcp -Direction Outbound -Priority 301 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow

$suffixes = @()

1..500 | ForEach-Object { $nm = $_.ToString("000"); $suffixes += @("$nm") } 

Foreach ( $suffix in $suffixes) {
    Write-Host $suffix
    $vmname = "SCLD-VT-W$suffix"
    Write-Host $vmname
    $nsg = New-AzNetworkSecurityGroup -Name "nsgW$suffix" -ResourceGroupName VolumetricTest -Location 'East US' -SecurityRules $nsg_rdp_in 
    Write-Host $nsg.Id 
    $net = New-AzNetworkInterfaceIpConfig -name "WNetAddr$suffix" -Subnet $( Get-AzVirtualNetworkSubnetConfig -Name default -VirtualNetwork $vnet ) -Primary
    $nic = New-AzNetworkInterface -Name "WNetif$suffix" -ResourceGroupName VolumetricTest -Location 'East US' -IpConfiguration $net -NetworkSecurityGroupId $nsg.Id 
    Write-Host $nic.Id 
    $vmconfig = New-AzVMConfig -VMName $vmname -VMSize "Standard_B2s" | Set-AzVMOperatingSystem -Windows -ComputerName $vmname -Credential $logincred | Set-AzVMSourceImage -PublisherName "microsoftwindowsdesktop" -Offer "Windows-10" -skus 'rs1-enterprise' -Version latest | Add-AzVMNetworkInterface -Id $nic.Id
    New-AzVM -ResourceGroupName $rgn -Location "East US" -VM $vmconfig
}

(细节被填充物取代了)

结果如下:

014
SCLD-VT-W014
/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/VolumetricTest/providers/Microsoft.Network/networkSecurityGroups/nsgW014
/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/VolumetricTest/providers/Microsoft.Network/networkInterfaces/WNetif014
WARNING: Since the VM is created using premium storage or managed disk, existing standard storage account, volumetrictestbootdiag, is used for boot diagnostics.

这台机器是在大约2分钟内创建的。

某些机器启动似乎不到一分钟,而其他机器则最多需要10分钟。

它至少选择我要使用的适当存储帐户。

1 个答案:

答案 0 :(得分:1)

在创建VM时,如果启用诊断,则必须指定一个存储帐户。在这种情况下,如果您未指定SA,它将为您创建一个存储帐户或选择任何现有的存储帐户。

您可以使用Set-AzureRmVMBootDiagnostics修改虚拟机的启动诊断属性以指定存储配置。

Set-AzureRmVMBootDiagnostics -VM $VM -Enable -ResourceGroupName "ResourceGroup11" -StorageAccountName "DiagnosticStorage"