Test-Connection实时无间距输出

Test-Connection output in realtime without spacing

Test-Connection PCNAME -count 6 | ft address, ipv4address, responsetime

我正在尝试使用上述命令编写一个命令来测试连接 (ping) 设备,但是,当我 运行 这样做时,它会在每列之间输出巨大的间距。我总是可以将 -AutoSize 添加到该命令的末尾,但是在完成之前输出不会显示在屏幕上,这违背了命令的目的。有没有办法实时无间距输出结果?

不,没有办法做到这一点。正如您所发现的,AutoSize 需要所有项目才能计算出列的大小,然后进行渲染。

当您只是 ping 连接时,table 的格式很重要吗?

注意:您始终可以使用 ForEach-Object 自行格式化输出,使其看起来更像 ping:

Test-Connection PCNAME -count 6 | % {Write-Host "Reply from $($_.IPV4Address): bytes=$($_.BufferSize) time=$($_.ResponseTime) TTL=$($_.ResponseTimeToLive)"}

这对我有用。你只需要给 format-table 一些更合适的宽度:

try {
Test-Connection blah -count 6 -ErrorAction Stop | ft @{Name='address';Expr={$_.address};width=10},
                                        @{Name='ipv4address';Expr={$_.ipv4address};width=12},
                                        @{Name='responsetime';Expr={$_.responsetime};width=15} 

} catch [System.Net.NetworkInformation.PingException]  {
  write-output 'request timed out'
}

编辑:为响应超时添加了 try/catch。