2016-08-28 4 views
0

Powershell은 나의 장점이 아니므로 앞으로는 분명히 대답할만한 확실한 대답을 찾을 수 없습니다.Powershell. 병렬로 작업 실행. 모두 기다리는 중

다른 프로세스의 일부로 여러 서버에서 서비스 시작을 중지해야합니다. 나는이 일을하고 있지만, 시작하는 데 5-10 분이 걸릴 수 있기 때문에 더 효율적으로 만들고 싶습니다. 지금은 8 개의 서비스를 시작하는 데 40 분 이상이 걸리므로 직렬화가 실행 중입니다. 시작 명령을 스레딩하고 다음 단계로 이동하기 전에 모든 명령이 완료되었는지 확인하는 가장 좋은 방법은 무엇입니까?

답변

1

대상 서버 당 하나의 작업으로 서비스 작업을 래핑하고 모든 작업이 완료 될 때까지 기다릴 수 있습니다.

작업을 만들려면 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

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

https://technet.microsoft.com/en-us/library/hh849735.aspx은 "다음 단계로 이동"검사에 대한 작업의 결과를 얻으려면 : Get-Job | Receive-Job

inf 설치 여기 https://technet.microsoft.com/en-us/library/hh849718.aspx

당신이 도움이 될 수 있습니다 병렬 실행을 사용하는 작업의 예를 찾을 수 있습니다 : http://www.get-blog.com/?p=22

이 모든 cmdlet을 사용할 수 및 작업 (아주) 내가 아는 한 V2 이후 동일합니다.

관련 문제