首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell。并行运行任务。等待所有人

Powershell。并行运行任务。等待所有人
EN

Stack Overflow用户
提问于 2016-08-28 20:28:54
回答 1查看 449关注 0票数 0

Powershell不是我的强项,所以我有一个问题,这个问题可能很直接,但无法找到明确的答案。

作为另一个过程的一部分,我需要停止跨多个服务器的workstart服务。我有这个工作,但希望让它更有效率,因为启动可能需要5-10分钟来完成。现在它是序列化运行的,所以启动8个服务需要40+分钟。将start命令线程化,然后检查以确保在进入下一步之前完成所有操作的最好方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-08-28 21:37:41

您可以将服务操作包装在每个目标服务器的一个作业中,并等待所有作业完成。

要创建作业:使用foreach ($Server in $Servers) { Start-Job { param($ServiceName); Stop-Service $ServiceName } -Name $Server -ArgumentList $ServiceName }或切换到CmdLet Start-Service以启动服务。

请参阅https://technet.microsoft.com/en-us/library/hh849698.aspx

等待作业完成:Get-Job | Wait-Job

请参阅https://technet.microsoft.com/en-us/library/hh849693.aspxhttps://technet.microsoft.com/en-us/library/hh849735.aspx

要获得“转到下一步”检查的作业结果,请执行以下操作:Get-Job | Receive-Job

请参阅https://technet.microsoft.com/en-us/library/hh849718.aspx

在这里,您将找到一个使用作业的并行执行示例,该示例可能对您有所帮助:http://www.get-blog.com/?p=22

据我所知,自从v2以来,所有这些CmdLet都是可用的,并且工作方式(相当)相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39191279

复制
相关文章

相似问题

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