首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >并行分批启动虚拟机,每批5台

并行分批启动虚拟机,每批5台
EN

Stack Overflow用户
提问于 2020-12-29 02:54:47
回答 1查看 88关注 0票数 0

我在Azure中设置了一个虚拟机,并且需要并行地批量启动虚拟机。例如,我有100个虚拟机,我需要一批1-5个虚拟机,首先并行启动,然后从6-10开始,以此类推。我能够并行启动所有am -但我找不到在foreach语句中添加限制的方法

代码语言:javascript
运行
复制
foreach ($vm in ($vms | Select-Object 5))

有什么建议可以让我这样做吗?

代码语言:javascript
运行
复制
$vms = Get-azvm -ResourceGroupName "VmList" 
#$jobs = @()

foreach ($vm in ($vms | Select-Object 5))
{
    $params = @($vm.Name)

    $job = Start-Job -ScriptBlock {
        param($ComputerName)
        start-Azvm -Name $ComputerName -ResourceGroupName "VmList"
    } -ArgumentList $params 
}

# Wait for it all to complete
Wait-Job -Job $job

# Getting the information back from the jobs
Get-Job | Receive-Job
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 03:35:05

如果你想跟踪你自己,你可以在Select-Object上使用splatting。从-Skip 0 -First 5开始,递增skip,这样下一个循环将是-Skip 5 -First 5,依此类推。

代码语言:javascript
运行
复制
$vms = Get-azvm -ResourceGroupName "VmList" 

$batch = @{
    Skip  = 0
    First = 5
}

Do
{
    foreach ($vm in ($vms | Select-Object @batch))
    {
        $params = @($vm.Name)
        $job = Start-Job -ScriptBlock {
            param($ComputerName)
            start-Azvm -Name $ComputerName -ResourceGroupName "VmList"
        } -ArgumentList $params 
    }

    # Wait for it all to complete
    Wait-Job -Job $job

    # Getting the information back from the jobs
    Get-Job | Receive-Job

    $batch.Skip += 5
}
until($batch.skip -ge $vms.count)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65482606

复制
相关文章

相似问题

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