2017-11-20 23 views
0

Test-Connection을 작업으로 실행하면 -delay 매개 변수를 완전히 무시한 것처럼 보입니다.-asjob 및 -delay와의 테스트 연결

예를 들어 "-delay 5"와 "-count 10"을 사용하면 완료하는 데 약 50 초가 걸릴 것으로 예상됩니다.

Measure-Command로 테스트 할 때 작업으로 실행될 때 이것이 사실이 아니라는 것을 알 수 있듯이 작업이 완료 될 때까지 1 초도 채 걸리지 않지만 작업이 실행되지 않을 때는 약 50 초 정도 걸렸습니다. 예상했다. I는 "-AsJob"하고 실행하는 데 걸리는 시간에조차 갖는 최소한의 영향으로 "-count 1000"를 사용하여 테스트 한

Measure-Command {Test-Connection google.co.uk -Count 10 -Delay 5 -AsJob | where {$_.Name = $Target}} 

Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 0 
Milliseconds  : 26 
Ticks    : 263563 
TotalDays   : 3.05049768518519E-07 
TotalHours  : 7.32119444444444E-06 
TotalMinutes  : 0.000439271666666667 
TotalSeconds  : 0.0263563 
TotalMilliseconds : 26.3563 

Measure-Command {Test-Connection google.co.uk -Count 10 -Delay 5} 

Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 45 
Milliseconds  : 445 
Ticks    : 454456692 
TotalDays   : 0.000525991541666667 
TotalHours  : 0.012623797 
TotalMinutes  : 0.75742782 
TotalSeconds  : 45.4456692 
TotalMilliseconds : 45445.6692 

.

나는이 현상이 발생하는 이유를 설명 할 수 있다면 주위를 둘러 보았지만 아무런 설명도 찾을 수 없었습니다.

-delay 매개 변수를 사용하여 test-connection을 호출하여 나머지 스크립트와 병렬로 실행하는 또 다른 방법이 있습니까? 결국 테스트 연결 결과를 검색 하시겠습니까?

업데이트 # 1

나는 측정-명령의 내 사용이 잘못 응답에서 볼 수 있지만 관계없이 다음과 같은 코드 조각이 걸릴 경우 :

$start = Get-date 
$target = "google.co.uk" 
$count = 10 
Test-Connection $target -Count $count -Delay 5 -AsJob | where {$_.Name = $target} 
$result = Wait-Job $Target | Receive-Job 
Remove-Job $target 
$result 
$end = Get-date 
"" 
Write-host "Completed in: $($end - $start)" 

출력을
Source  Destination  IPV4Address  IPV6Address      
------  -----------  -----------  -----------      
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          
SURFACE  google.co.uk 216.58.204.3          

Completed in: 00:00:00.1170733 
내 방법에 근본적인 결함이있는 경우

반환

SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         
SURFACE  google.co.uk 216.58.206.131         

Completed in: 00:00:45.4695467 

잘 모르겠어요.

아마도 원래의 질문은 정확하지 않을 수 있습니다. 측정 명령을 사용하는 이유는 내 관찰을 시도하고 계량화하려는 것이었을 것입니다.

테스트 연결을 1 초 간격으로 120 회 수행하는 작업으로 테스트 연결을 실행 중이므로 약 20 초 동안 해당 작업을 사용할 수 없게됩니다. 120 초. 하지만 그 작업을 반환하고 몇 초 만에 결과를 출력 할 수 있습니다. 내가 기대하는 바가 아니다.

+0

명령을 실행'도움말 about_Jobs' 및 설명을 읽어 보시기 바랍니다. 바로 거기에 백그라운드 작업을 시작하면 작업이 완료되는 데 시간이 오래 걸리는 경우에도 명령 프롬프트가 즉시 반환됩니다. 작업이 실행되는 동안 중단없이 세션에서 계속 작업 할 수 있습니다. " 즉, '-AsJob'은 비동기 적으로 명령을 실행하므로'Measure-Command'는 즉시 완료되는 것으로 봅니다. –

+0

질문을 업데이트했습니다. – user7554519

답변

1

실제로 작업이 끝나기를 기다리지 않기 때문입니다. 개별 작업을 스핀 업하고 PSJob 개체를 반환하는 데 단지 몇 밀리 초가 소요됩니다.

함께 비교 :

Measure-Command { 
    Test-Connection google.co.uk -Count 10 -Delay 5 -AsJob |Receive-Job -Wait 
} 
# and 
Measure-Command { 
    Test-Connection google.co.uk -Count 10 -Delay 5 
} 
+0

질문을 업데이트했습니다. – user7554519