[英]Test-Connection Performance Slow
我有一个设备列表,我想对其进行ping操作以查看它们是否处于活动状态。 如果它们处于活动状态(即使不是活动状态),我也想登录到文件。 因此,活动设备将转到一个文件,而“无法ping通”的设备将被写入另一文件。 我下面的脚本适用于较小的计算机样本,但是当我添加完整列表时,脚本的“测试连接”部分需要几个小时才能完成(大约8,000台设备)。 是否可以通过并行运行命令来提高性能? 在我的搜索中,我遇到了David Wyatt => TestConnectionAsync的包装函数,但是我不确定如何将结果分为两个文件。 任何帮助,将不胜感激。
码:
ForEach ($PC in $Computer_List) {
If (Test-Connection -ComputerName $PC -Quiet -Count 1) {
Add-Content -value $PC -Path "$UPpath"
} Else {
Add-Content -Value $PC -Path "$DOWNpath"
}
}
Test-ConnectionAsync
的输出使此操作非常简单:
当指定Test-ConnectionAsync的-Quiet开关时,它将返回带有属性“ ComputerName”和“ Success”的PSCustomObjects的集合。 成功是您从Test-Connection -Quiet获得的布尔值; PSCustomObject仅允许您将结果与目标地址相关联。
因此,您要做的就是:
Success
属性,看看是否应该将其放在一个文件或另一个文件中 # 1. Gather ping results
$TestResults = $ComputerList | Test-ConnectionAsync -Quiet
# 2. Loop through results and look at Success
foreach($Result in $TestResults){
$FilePath = if($Result.Success){
$UPpath
} else {
$DOWNpath
}
Add-Content -Path $FilePath -Value $Result.ComputerName
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.