하나의 파일 (호스트 이름 포함)을 10 개의 파일로 분할하고 각 파일의 호스트 이름에 대해 ping (즉, powershell 테스트 연결 명령)을 수행하는 스크립트를 작성했습니다 (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
}
}
}
'Create-New-Object'? 그러한 것이 없다. – 4c74356b41
'Start-Job'은 별도의 변수 ('$ resultsarray_file1')가있는 별도의'Runspace'로 새로운 프로세스를 생성함으로써 작동합니다. – PetSerAl
이있는 사용자 작성 기능 –