2012-07-18 1 views
0

시작 - 작업을 사용하여 일부 서버에서 보안 로그를 수집하는 명령을 실행하려고합니다. 등 일의 내가 서버 목록을 얻기 위해 .ini 파일을 구문 분석하고있어, 수는Powershell 멀티 스레딩 시작 작업 도움말 제발

#___Collect Logs from Servers___# 

$servList = $iniContent["SERVERS"]["svr"] 
$days = $iniContent["DAYS"]["days"] 
$date = $(get-date -format ddMMyyyy) 
$err = "Error Collecting $($logType) from $($server) or the Event Log is empty! | $(Get-Date -format g) " 
$serv = $servList.Split(",") 


foreach ($server in $serv){ 

$outfile = "D:\DCLogs\$($date)_$($server)_$logType.txt" 
$ScriptBlock = cmd /c "D:\CollectLog\Dumpel.exe -f $($outFile) -l $($logType) -s $($server) -d $($days)" 

    Start-Job -ScriptBlock $ScriptBlock 

    Get-Job | Wait-Job 

    $file = Get-ChildItem D:\DCLogs -Filter "$($date)_$($server)*" -Name 

    $len = $file.length/1KB   # Check LogFile Size 
    if ($len -eq 0){ 
     $errCount = 1 
     write-output $err | Out-File $errLog -append 
        } 
     } 

단지 내가 뭔가 잘못하고있어 알고 한 번에 하나의 작업을 시작하고있다. 누군가가 문제를 지적 할 수 있다면 크게 감사하겠습니다.

감사합니다. Amelia

답변

1

Get-Job | Wait-Job 루프에서 작업을 직렬화하면됩니다. 루프를 사용하여 작업을 시작한 다음 Get-Job | Wait-Job을 루프 외부에서 사용할 수 있습니다.

봅니다 사용하여은 ScriptBlock을 정의 :

$ScriptBlock = {...} 
+0

안녕 JPBlanc을 - 나는 foreach는 ($의 SERV에서 $ 서버) {$ OUTFILE = "D 시도 : \ DCLogs \ $ ($ 날짜) _ $ ($ 서버를) _ $ logType.txt "$ ScriptBlock = cmd/c"D : \ CollectLog \ Dumpel.exe -f $ ($ outFile) -l $ ($ logType) -s $ ($ 서버) -d $ ($ days) "Start-Job -ScriptBlock $ ScriptBlock} Get-Job | Wait-Job -하지만 여전히 한 번에 1 개의 작업 만 시작합니다. – user1131196

+0

'{...} '을 사용하여 스크립트 블록을 정의하십시오. – JPBlanc