2016-08-28 11 views
0

Powershellは私の特番ではありませんので、私はおそらくまっすぐですが明確な答えを見つけることができません。Powershell。タスクを並行して実行する。すべて待っています

私は別のプロセスの一部として、いくつかのサーバー間でサービスを開始するのをやめる必要があります。私はこの作業をしていますが、開始が完了するまでに5〜10分かかりますので、効率を上げるために探していました。今はシリアル化されているので、8つのサービスを開始するには40分以上かかります。開始コマンドをスレッド化し、次のステップに進む前にそれらのすべてが完了したことを確認する最良の方法は何ですか?

答えて

1

ターゲット・サーバーごとに1つのジョブにサービス・アクションをラップして、すべてのジョブが完了するまで待つことができます。

ジョブを作成するには、foreach ($Server in $Servers) { Start-Job { param($ServiceName); Stop-Service $ServiceName } -Name $Server -ArgumentList $ServiceName }を、サービスを開始するにはCmdLet Start-Serviceに切り替えます。

Cf. Get-Job | Wait-Job

Cfと:ジョブの完了を待つhttps://technet.microsoft.com/en-us/library/hh849698.aspx

https://technet.microsoft.com/en-us/library/hh849693.aspx

https://technet.microsoft.com/en-us/library/hh849735.aspxは、「次のステップに進む」チェックのためのジョブの結果を取得するには:Get-Job | Receive-Job

Cfとここでhttps://technet.microsoft.com/en-us/library/hh849718.aspx

あなたはあなたを助けるかもしれないジョブを使用して並列実行の例を見つけることができます:http://www.get-blog.com/?p=22

これらのすべてのコマンドレットは、私の知る限り、V2以降で利用可能と作業(かなり)と同じです。

関連する問題