2016-12-16 6 views
0

하나의 파일 (호스트 이름 포함)을 10 개의 파일로 분할하고 각 파일의 호스트 이름에 대해 ping (즉, powershell 테스트 연결 명령)을 수행하는 스크립트를 작성했습니다 (). 프로세스 속도를 높이기 위해 start-job 명령을 사용하여 각 파일 호스트 이름을 처리했습니다. start-job 명령을 제거하면 스크립트가 제대로 작동합니다. 그러나 start-job 명령을 사용할 때 "scriptblock"내부에서 사용 된 배열은 원하는 결과를 반환하지 않습니다. 대신, 그것은 비어 있습니다. 다음은 부분 스크립트 (하나의 파일 처리에만 해당)입니다. 제발, 여기서 나는 무엇을 놓치고 있습니까?Powershell, 시작 작업이 작동하지 않습니다. 시작 작업 스크립트가 없으면 Ok

Start-Job -Name "Ping-Part-1" -ScriptBlock { 
    foreach ($Comp1 in $file_part1_content) { 
     If (test-Connection -ComputerName $Comp1 -Count 1 -Quiet) { 
       $project1 = Create-New-Object 
       $project1.AliveStatus = "Alive" 
       $project1.Hostname = $Comp1 
       $resultsarray_file1 += $project1 
      } 
      Else { 
       $project1 = Create-New-Object 
       $project1.AliveStatus = "Not Alive" 
       $project1.Hostname = $Comp1 
       $resultsarray_file1 += $project1 
      } 
     } 
    } 
+0

'Create-New-Object'? 그러한 것이 없다. – 4c74356b41

+0

'Start-Job'은 별도의 변수 ('$ resultsarray_file1')가있는 별도의'Runspace'로 새로운 프로세스를 생성함으로써 작동합니다. – PetSerAl

+0

이있는 사용자 작성 기능 –

답변

0

몇 가지 문제가 있습니다. 기본적으로 작업 내에서 사용하는 변수는 powershell 세션에서 사용할 수 없습니다 (반대의 경우 btw). 여러 가지 문제가 있습니다. 당신은 일에 어떤 변수도 두지 않고 있으며, 일자리에서 벗어나지도 못하고 있습니다.

또한 시작 작업을 잘못된 위치에 넣었습니다. 이제 전체 foreach 루프를 사용하여 1 개의 작업을 시작합니다. 각 컴퓨터를 개별적으로 처리하려고한다고 가정합니다. 따라서 foreach 루프 내에서 작업을 시작해야합니다.

나는 당신의 시나리오에 맞는이 blogpost를 전에 작성했습니다. 당신은 그것을 here 찾을 수 있습니다.

+0

시작-작업 -Name "핑 - 파트 - 1 "-ScriptBlock {$ resultsarray_file1 = @() foreach ($ file_part1_content의 $ Comp1) { if (test-Connection -ComputerName $ Comp1 -Count 1 -Quiet) {$ project1 = Create-New-Object $ project1 .AliveStatus = "Alive" $ project1.Hostname = $ Comp1 $ resultsarray_file1 + = $ project1} Else {$ project1 = Create-New-Object $ proje ct1.AliveStatus = "안 살아" $ project1.Hostname = $ COMP1 $ resultsarray_file1 + = $ 프로젝트 1}} 반환 $의 resultsarray_file1} –

+0

난 당신이 여전히 "스타트 작업은"Uhmm 아무것도 –

+0

을 반환하지 않습니다, 말한했다 아니 정말. 아직 시작 작업에 변수를 입력하지 않았습니다. -argumentlist를 사용하여이를 수행 할 수 있습니다. 위의 게시물에서 내가 보낸 링크를 확인하십시오. http://sonnypuijk.nl/wp/powershell-jobs-for-multithreading/ –