Test-Connection PCNAME -count 6 | ft address, ipv4address, responsetime
我試圖編寫一個命令來測試連接(ping)使用上述命令的設備,但是,當我運行它時,它會在每列之間輸出巨大的間距。我總是可以將-AutoSize
添加到該命令的末尾,但是直到完成後纔會在屏幕上顯示輸出,這會破壞命令的用途。有沒有辦法實時輸出結果而沒有間隔? 無間距實時測試連接輸出
Test-Connection PCNAME -count 6 | ft address, ipv4address, responsetime
我試圖編寫一個命令來測試連接(ping)使用上述命令的設備,但是,當我運行它時,它會在每列之間輸出巨大的間距。我總是可以將-AutoSize
添加到該命令的末尾,但是直到完成後纔會在屏幕上顯示輸出,這會破壞命令的用途。有沒有辦法實時輸出結果而沒有間隔? 無間距實時測試連接輸出
這對我的作品。你只需要給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爲響應超時。
沒有有沒有辦法做到這一點。正如您發現的那樣,AutoSize
需要所有項目才能計算出列的大小,然後進行渲染。
當你只是執行ping連接表的格式太大的關注?
注意:您總是可以格式化自己使用ForEach-Object
,使它看起來更有點平式的輸出:
Test-Connection PCNAME -count 6 | % {Write-Host "Reply from $($_.IPV4Address): bytes=$($_.BufferSize) time=$($_.ResponseTime) TTL=$($_.ResponseTimeToLive)"}
您是否知道一種模擬常規ping的「請求超時」功能的方法?如果它ping,那麼在運行過程中不顯示「超時」? – Aaron
已更新的答案。 –
雖然中間失敗,但它不會像你所暗示的那樣工作。它會在超時時停止。 –