2015-11-05 33 views
1
Test-Connection PCNAME -count 6 | ft address, ipv4address, responsetime 

我試圖編寫一個命令來測試連接(ping)使用上述命令的設備,但是,當我運行它時,它會在每列之間輸出巨大的間距。我總是可以將-AutoSize添加到該命令的末尾,但是直到完成後纔會在屏幕上顯示輸出,這會破壞命令的用途。有沒有辦法實時輸出結果而沒有間隔? enter image description here無間距實時測試連接輸出

回答

3

這對我的作品。你只需要給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爲響應超時。

+0

您是否知道一種模擬常規ping的「請求超時」功能的方法?如果它ping,那麼在運行過程中不顯示「超時」? – Aaron

+0

已更新的答案。 –

+0

雖然中間失敗,但它不會像你所暗示的那樣工作。它會在超時時停止。 –

1

沒有有沒有辦法做到這一點。正如您發現的那樣,AutoSize需要所有項目才能計算出列的大小,然後進行渲染。

當你只是執行ping連接表的格式太大的關注?

注意:您總是可以格式化自己使用ForEach-Object,使它看起來更有點平式的輸出:

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

是的,我想將它合併成一個工作中使用的工具,當排除PC連接問題時,實時查看ping是必需的。 – Aaron

+0

@Aaron - 我已經添加了一個如何使用'Test-Connection'來給出更像ping輸出的示例 – Sean