运行 一个 gridview 输出的多个测试连接
Run multiple test-connection for one gridview output
如何使用多个 Test-Connection
cmdlet 并将它们全部放在一个 Out-GridView
中,或者对于我在这里尝试做的事情是否有其他解决方案?
关键是能够一个接一个地 ping 多个地址,并让它们全部出现在同一个 window.
你可以使用这个命令:
$tests= Test-Connection -ComputerName $env:COMPUTERNAME
$tests+= Test-Connection -ComputerName $env:COMPUTERNAME
$tests| Out-GridView
将您的 IP 地址(或主机名)列表输入 ForEach-Object
循环 运行ning Test-Connection
每个地址,然后将结果输入 Out-GridView
:
$addr = '192.168.1.13', '192.168.23.42', ...
$addr | ForEach-Object {
Test-Connection $_
} | Out-GridView
请注意,这可能相当 time-consuming,具体取决于您要检查的地址数量,因为所有地址都是按顺序检查的。
如果您需要加快处理大量地址的速度,例如,您可以 运行 并行检查 background jobs:
$addr | ForEach-Object {
Start-Job -ScriptBlock { Test-Connection $args[0] } -ArgumentList $_
} | Out-Null
$results = do {
$running = Get-Job -State Running
Get-Job -State Completed | ForEach-Object {
Receive-Job -Job $_
Remove-Job -Job $_
}
} while ($running)
$results | Out-GridView
不过,过多的并行性可能会耗尽您的系统资源。根据您要检查的地址数量,您可能需要在 运行 按顺序排列事物和 运行 并行排列事物之间找到一些中间地带,例如使用 job queue.
Test-Connection
可以获取一组计算机名称或地址并对它们执行 ping 操作。每台计算机上的每个 ping 都会 return 一行,但您可以使用 -Count
参数将其限制为 1 次 ping。您还可以使用 -AsJob
到 运行 命令作为后台作业。
$names = server1,server2,serverN
Test-Connection -ComputerName $names -Count 1 -AsJob | Wait-Job | Receive-Job
您将得到 Win32_PingStatus 个对象的列表,这些对象显示为
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
如果时间栏(ResponseTime 属性)为空,则没有ping重播,服务器离线。你可以过滤这个。
如何使用多个 Test-Connection
cmdlet 并将它们全部放在一个 Out-GridView
中,或者对于我在这里尝试做的事情是否有其他解决方案?
关键是能够一个接一个地 ping 多个地址,并让它们全部出现在同一个 window.
你可以使用这个命令:
$tests= Test-Connection -ComputerName $env:COMPUTERNAME
$tests+= Test-Connection -ComputerName $env:COMPUTERNAME
$tests| Out-GridView
将您的 IP 地址(或主机名)列表输入 ForEach-Object
循环 运行ning Test-Connection
每个地址,然后将结果输入 Out-GridView
:
$addr = '192.168.1.13', '192.168.23.42', ...
$addr | ForEach-Object {
Test-Connection $_
} | Out-GridView
请注意,这可能相当 time-consuming,具体取决于您要检查的地址数量,因为所有地址都是按顺序检查的。
如果您需要加快处理大量地址的速度,例如,您可以 运行 并行检查 background jobs:
$addr | ForEach-Object {
Start-Job -ScriptBlock { Test-Connection $args[0] } -ArgumentList $_
} | Out-Null
$results = do {
$running = Get-Job -State Running
Get-Job -State Completed | ForEach-Object {
Receive-Job -Job $_
Remove-Job -Job $_
}
} while ($running)
$results | Out-GridView
不过,过多的并行性可能会耗尽您的系统资源。根据您要检查的地址数量,您可能需要在 运行 按顺序排列事物和 运行 并行排列事物之间找到一些中间地带,例如使用 job queue.
Test-Connection
可以获取一组计算机名称或地址并对它们执行 ping 操作。每台计算机上的每个 ping 都会 return 一行,但您可以使用 -Count
参数将其限制为 1 次 ping。您还可以使用 -AsJob
到 运行 命令作为后台作业。
$names = server1,server2,serverN
Test-Connection -ComputerName $names -Count 1 -AsJob | Wait-Job | Receive-Job
您将得到 Win32_PingStatus 个对象的列表,这些对象显示为
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
如果时间栏(ResponseTime 属性)为空,则没有ping重播,服务器离线。你可以过滤这个。