首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure资源组中的并行处理

Azure资源组中的并行处理
EN

Stack Overflow用户
提问于 2016-02-01 15:27:48
回答 1查看 758关注 0票数 1

例如,资源组中有3台虚拟机。

我想并行启动这些虚拟机。

比方说,一个VM需要3分钟才能启动,所以对于3个VM,它需要9分钟。现在,我希望这些VM并行启动,这样在大约3分钟内,所有的3个VM都应该开始。

经过大量的研发,我没有找到任何解决办法。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 01:43:23

您可以使用Start-JobWait-Job来实现这一点。这是一个PowerShell脚本。

代码语言:javascript
复制
$cred = Get-Credential
$VMs = @(@{"Name"="vm1";"ServiceName"="srv1"};@{"Name"="vm2";"ServiceName"="srv2"};@{"Name"="vm3";"ServiceName"="srv3"})
$jobs = @()
foreach ($vm in $VMs) 
{ 
    $params = @($vm.Name, $vm.ServiceName, $cred) 
    $job = Start-Job -ScriptBlock { 
        param($Name, $ServiceName, $cred) 
        try{
            $acct = Get-AzureRmSubscription
        }
        catch{
            Login-AzureRmAccount -Credential $cred
        }
        start-AzureVM -Name $Name -ServiceName $ServiceName 
    } -ArgumentList $params  
    $jobs = $jobs + $job 
} 
Wait-Job -Job $jobs
Get-Job | Receive-Job

以上代码用于典型部署的VM。如果使用ARM部署,则可以使用以下脚本。

代码语言:javascript
复制
$cred = Get-Credential
$VMs = @(@{"Name"="vm1";"ResourceGroupName"="rg1"};@{"Name"="vm2";"ResourceGroupName"="rg2"};@{"Name"="vm3";"ResourceGroupName"="rg3"})
$jobs = @()
foreach ($vm in $VMs) 
{ 
    $params = @($vm.Name, $vm.ResourceGroupName, $cred) 
    $job = Start-Job -ScriptBlock { 
        param($Name, $ResourceGroupName, $cred) 
        try{
            $acct = Get-AzureRmSubscription
        }
        catch{
            Login-AzureRmAccount -Credential $cred
        }
        start-AzureRmVM -Name $Name -ResourceGroupName $ResourceGroupName 
    } -ArgumentList $params  
    $jobs = $jobs + $job 
} 
Wait-Job -Job $jobs
Get-Job | Receive-Job
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35134219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档