前言
最近有個需求,需要快速依照主機清單快速執行 Ping 的動作之外,希望了解 Ping
的結果是否成功或失敗,並且
RTT (Round Trip Time)
時間為多少 ms,所以這篇筆記便出現了。
一塊小蛋糕?
原本以為這應該是一塊小蛋糕的需求,只要寫個迴圈加載入主機清單的 Array
即可達成吧? 首先,採用
Test-NetConnection
搭配主機名稱,即可得到我想要的結果,包含 Ping
的結果是否成功或失敗,並且 RTT (Round Trip Time) 時間為多少 ms。
然而,因為預設顯示的欄位有些我並不需要,所以透過
Format-Table
來選取想要呈現的欄位。但是,卻發現
PingReplyDetails (RTT)
的欄位值無法顯示? 查詢後發現,該欄位是屬於
PingReply 類別的 PingReply.RoundtripTime 屬性,所以無法直接顯示。
那麼該如何單獨且正確的顯示? 簡單來說,抓取 PingReply.RoundtripTime 屬性數值並加上 ms
字串後顯示,但是目前的數值結果會是預設的「左邊」,屆時搭配 Format-Table 時會加上「align="right"」讓數值靠右呈現。
執行時,先檢查主機名稱是否存在,當主機名稱存在時以「綠色」字體顯示主機存在「host exists try to ping!」,並且透過 Test-NetConnection 搭配主機名稱執行 Ping 的動作,倘若主機名稱不存在時,則以「紅色」字體顯示「name resolution failed!」。