나는 이미 많은 연구를 해왔지만, 내가하고 싶은 것을 성취하는 방법을 여전히 알 수 없다.Powershell 병렬 작업 출력 파일
100 대의 Linux 서버에서 동일한 작업을 병렬로 수행하고자합니다. 여기
내 스크립트의 간단한 예입니다$computer=Get-Content "serverList.txt"
[email protected]()
$script={
$cpuThresh=70
$cpuUsage=<Get CPU usage of the host>
Write-Host "CPU Usage: $cpuUsage %"
if ($cpuUsage -ge $cpuThresh) {
Write-Host "Unexpected CPU Usage" -ForegroundColor Red
}
}
foreach ($system in $computer) {
$jobArray += Start-Job -ScriptBlock $script -ArgumentList $system
While ((Get-Job -State 'Running').Count -ge 10) {
Start-Sleep -Milliseconds 10
}
}
foreach ($job in $jobArray) {
While ($job.State -eq 'Running') {
Start-Sleep -Milliseconds 10
}
Receive-Job -Job $job
Remove-Job -Job $job
}
내가 가진 문제는 특정 메시지를 별도의 파일 및 여러 작업에 (예 : 예기치 않은 CPU 사용)에 쓰기를 시도를 기록 할 것입니다 이 파일은 동시에.
제 아이디어는 모든 메시지를 배열에 저장하고 스크립트의 끝에 (두 번째 foreach 루프) 파일에 쓰는 것입니다.
그러나 Receive-Job은 변수/개체를 반환하지 않습니다.
변수/개체를 반환하는 방법이 있습니까? 아니면 내가하고 싶은 것을 성취 할 수있는 또 다른 방법이 있습니까?
어떤 도움을 주셔서 감사합니다. 감사.
빠른 답장을 보내 주셔서 감사합니다. 다른 출력 스트림을 사용하는 것에 대해 생각해야합니다 ... 유일한 문제는 $ job.ChildJobs [0]입니다. 경고는 모든 메시지를 포함하는 개체를 반환합니다. 메시지 헤더를 제거하는 가장 좋은 방법은 무엇입니까? 쓰기 출력 $ 경고 | 메시지 | Format-Table -HideTableHeaders 그게 내가 지금하고있는 방식이야. 더 나은 해결책이 있습니까? – user3015914
$ 경고 | 쓰기 출력이 작동하는 것 같습니다. – mjolinor