0

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 つのジョブしか開始していないので、何か間違ったことをしていることはわかっています。誰かが問題を指摘できれば、私はそれを大いに感謝します.

ありがとうございました。アメリア

4

1 に答える 1

1

Get-Job | Wait-Jobループでは、ジョブをシリアル化するだけです。ループを使用してジョブを開始し、Get-Job | Wait-Jobループの外で使用できます。

次を使用して ScriptBlock を定義してみてください。

$ScriptBlock = {...}
于 2012-07-18T03:55:10.767 に答える