繁体   English   中英

使用-asjob和-delay进行测试连接

[英]Test-Connection with -asjob and -delay

当将Test-Connection作为作业运行时,它似乎完全忽略了-delay参数。

例如,当使用“ -delay 5”和“ -count 10”时,可以预期大约需要50秒才能完成。

当使用Measure-Command进行测试时,这确认了当以作业方式运行时不是这种情况,因为您可以看到该作业花费了不到一秒钟的时间来完成,但是当以作业方式运行时花费了大约50秒的预期时间。

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

我已经对“ -count 1000”和“ -asjob”一起使用进行了测试,即使这样做对执行时间的影响也很小。

我环顾四周,但找不到任何解释,并且好奇是否有人可以解释为什么发生此现象?

另外,还有另一种方法可以调用带有-delay参数的test-connection来与我的脚本的其余部分并行运行,最后检索test-connection的结果吗?

更新#1

从响应中可以看出,我对Measure-Command的使用是错误的,但是无论您是否采用以下代码段:

$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

$start = Get-date
$target = "google.co.uk"
$count = 10
Test-Connection $target -Count $count -Delay 5
$end = Get-date
""
Write-host "Completed in: $($end - $start)"

返回

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

我不确定我的方法是否存在一些基本缺陷。

也许我最初的问题并没有那么清楚,我使用Measure-Command的原因是试图量化我的观察结果。

我正在将测试连接作为一项作业运行,以每隔1秒执行120次ping操作,因此我希望该作业在大约1秒钟内不可用。 120秒 但是我可以在短短几秒钟内返回工作并输出结果。 这不是我所期望的。

那是因为您实际上并不是在等待作业完成。 只需几个毫秒即可启动各个作业并返回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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM