2016-08-11 4 views
0

PowerShell에서 동시에 여러 작업을 동기화하려고하는데 각 작업마다 약 2-4 시간이 걸리기 때문입니다. 스크립트는 이제 각 작업을 차례로 처리합니다. PowerShell에서 백그라운드 작업이라는 옵션이 있다는 것을 알고 있습니다.. 여러 개의 .cmd 파일을 동시에 처리하도록 다음 코드를 변환하는 방법이 있습니까? 당신은 당신이 시작한 작업의 상태를보고 몇 가지 코드를 추가해야 할 가능성이 시점에서PowerShell 백그라운드 작업 (동시에 여러 .cmd 파일)

$job = Start-Job { & K:\sample.cmd } 

:

$handler_button1_Click= 
{ 
$answer= $finalcheck.popup("text",0,"text",4) 
If($answer-eq 6) { 
    [Windows.Forms.MessageBox]::Show("text", "Information", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information) 
    $listBox1.Items.Clear();  
    if ($checkBox1.Checked) { 
    Try{ 
    & K:\sample.cmd 
    }catch [System.Exception]{ 
    $listBox1.Items.Add("Error")} 
    } 

    if ($checkBox2.Checked) { 
    Try{ 
    & K:\sample2.cmd 
    }catch [System.Exception]{ 
    $listBox1.Items.Add("Error")} 
    } 

답변

1

당신은 시작-작업을 사용할 수 있습니다. 잠재적으로 $ job.State를 주기적으로 검사 할 수 있습니다.

이 기능을 확장하면 이미 실행중인 동일한 유형의 작업 시작을 거부 할 수 있습니다. 또한

는 시작 - 작업의 정보는 다음의 제품에 당신이 한 번 봐 걸릴해야합니다

  • 가져 오기 - 작업 - 모든 채용 정보를 (실행 중이거나 기타)하기 위해
  • 수신 - 작업 - 다시 결과
  • 얻으려면 Remove-Job - 작업 완료 후 작업을 제거합니다.
  • Stop-Job - 작업을 중지해야 할 경우 작업을 중지합니다.
+0

고맙습니다. 작업이 완료되었는지 확인하는 방법이 있습니까? sample.cmd를 시작할 때처럼 프로세스는 ~ 3 시간 동안 진행되고 파일을 내 Oracle 데이터베이스에 삽입합니다. 작업이 끝날 때마다 사용자에게 메시지를 출력하고 싶습니다. –

+0

예, 당신은 $ job.State를 검사합니다. 실행, 완료, 실패 등입니다. –