Powershell Multi-Threading Start-Job请帮助

时间:2012-07-18 03:28:32

标签: multithreading logging powershell start-job

我正在尝试使用Start-Job运行命令以从某些服务器收集安全日志。 我正在解析.ini文件以获取服务器列表,天数等。

#___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
                    }
        }

它一次只开始一份工作所以我知道我做错了什么。如果有人可以请指出问题,我会非常感激。

谢谢。 阿米莉亚

1 个答案:

答案 0 :(得分:1)

循环中的

Get-Job | Wait-Job,只是序列化作业。您可以使用循环来启动作业,然后在循环外使用Get-Job | Wait-Job

尝试使用以下方法定义ScriptBlock:

$ScriptBlock = {...}