我正在嘗試爲大型作業生成1000個Azure虛擬機(是的,我知道成本)。這是在PowerShell腳本中完成的(參見下面的腳本),所以在等待所有虛擬機啓動時不會發生費用。在PowerShell中創建Azure虛擬機異步
在腳本如果Wait-Job
和Receive-Job
包括當腳本運行的所有虛擬機要求創建的,但如果Wait-Job
和Receive-Job
被註釋掉根本沒有創建虛擬機。看起來隨機的虛擬機正在創建。
任何人都可以看到我做錯了這個腳本?
$VMCount = 5
$Location = 'East US'
$Image = 'MyImage'
$AdminPassword = 'XXXXXXXXXX'
$LinuxUser = 'MyUser'
$InstanceSize = 'ExtraSmall' #extra small only for testing
$CloudServiceName = 'NewAzureMachinePrefix' #this is changed each time to something unique
for ($i = 1; $i -le $VMCount; $i++)
{
$jobId = Start-Job -ArgumentList $CloudServiceName$i, $Location, $Image, $AdminPassword, $LinuxUser, $InstanceSize -ScriptBlock {
param($ServiceName, $Loc, $Img, $Password, $User, $Size)
New-AzureVMConfig -Name $ServiceName -InstanceSize $Size -ImageName $Img |
Add-AzureProvisioningConfig -Linux -LinuxUser $User -Password $Password |
Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel $ServiceName -LUN 0 |
Remove-AzureEndpoint 'SSH' |
Add-AzureEndpoint -Protocol tcp -PublicPort 22 -LocalPort 22 -Name 'SSH' |
Set-AzureSubnet 'MySubnet' |
New-AzureVM -ServiceName $ServiceName -AffinityGroup 'MyGroup' -VNetName 'MyNet'
}
Write-Output $CloudServiceName$i
Wait-Job $jobId
Receive-Job $jobId
}
您是否能夠想出一個不需要Wait-Job的解決方案? – Glenn 2014-11-04 15:44:18
腳本塊(Start-Job)中的代碼爲您創建虛擬機。您不需要運行Wait-Job和Receive-Job來創建虛擬機。 – 2014-11-04 20:23:51
謝謝。但是,在連續創建多個虛擬機時,鎖定虛擬網絡還存在問題嗎?我瞭解到,由於獨佔鎖定,一些工作並未成功完成。您是否修改了腳本以處理失敗的作業,直到它們全部完成? – Glenn 2014-11-05 22:04:06