適材適所

PowerShellやVBAなどのプログラミングに関すること、キャリア、子育ての3本で書いていきます

PowerShellでpingにタイムスタンプを付加する

pingコマンド、便利なんですが、コマンドを打った時間が表示されないのがネック。

ネットワークのテストで、-tコマンドを使って連続で打つときなどは、いつの時点で接続が切れて、

接続されて、ということを知りたい場面は多いかと思います。

そんなときはPowerShellを使ってワンライナーでタイムスタンプを付加すると、簡単便利なので紹介していこうと思います。

普通に打つと

PS C:\> ping google.com -t
google.com [2404:6800:4004:807::200e]に ping を送信しています 32 バイトのデータ:
2404:6800:4004:807::200e からの応答: 時間 =7ms
2404:6800:4004:807::200e からの応答: 時間 =8ms

もちろん日時は表示されません。

ただ、pingの結果だけが返ってきます。

PowerShellでタイムスタンプを付加

PS C:\> ping google.com -t|?{$_ -ne ""}|%{(get-date).tostring() +" "+$_}
2020/07/20 22:12:33 google.com [2404:6800:4004:807::200e]に ping を送信しています 32 バイトのデータ:
2020/07/20 22:12:33 2404:6800:4004:807::200e からの応答: 時間 =7ms
2020/07/20 22:12:34 2404:6800:4004:807::200e からの応答: 時間 =8ms

このようにすると、タイムスタンプが付加されます。

これで、ネットワークの切断や接続があったとき、日時が一目瞭然ですね。

pingコマンドの返り値は文字列ですが、PowerShellではその返り値を、改行を区切りとして文字列の配列として扱います。

下記のコマンド確認できます。

PS C:\> $ping=ping google.com
PS C:\> $ping -is [array]
True

配列として扱われることを利用して、パイプラインで空白以外のものを渡し、Get-Dateコマンドを各要素の先頭にくっつけているだけです。

Get-DateのToStringメソッドに書式を指定してあげれば、お好みに応じて出力する日時をカスタマイズできるので便利です。

時間だけ

PS C:\> ping google.com -t|?{$_ -ne ""}|%{(get-date).tostring("hh:mm:ss") +" "+$_}
10:19:59 google.com [2404:6800:4004:809::200e]に ping を送信しています 32 バイトのデータ:
10:19:59 2404:6800:4004:809::200e からの応答: 時間 =7ms

細かい応答時間を知りたい

PS C:\> ping google.com -t|?{$_ -ne ""}|%{(get-date).tostring("hh:mm:ss:ffff") +" "+$_}
10:29:35:9098 google.com [2404:6800:4004:807::200e]に ping を送信しています 32 バイトのデータ:
10:29:35:9138 2404:6800:4004:807::200e からの応答: 時間 =7ms
10:29:36:9167 2404:6800:4004:807::200e からの応答: 時間 =7ms

.NETの書式のおかげで、かなり柔軟に設定ができるのがいいですね!!

余談

普段あまり、というか全く意識することはないのですが、

この記事を書くためにGoogle様にpingを送ったら、IPアドレスがIPv6になっていたので、一瞬間違えたかと思いました。

あまり見慣れないもんで、びっくりしてしまいました・・・。

他の主要ななサイトはどうなっているのかpingを打ってみたら、youtubeやyahooもIPv6アドレスになっていました。

少し前はIPv4だったような・・・。

あ、もしかして、うちの光回線(楽天光)がIPv6に対応したからでしょうか。

それはさておき、インターネットの世界も、少しずつIPv6が主流になっていくんですね。

終わりに

PowerShellを使って、pingにタイムスタンプを付加する方法を紹介しました。

たまには外部のサービスに迷惑にならない程度にpingを打つと、時代の流れを感じることができますね・・・。

気づいたら今回のテーマと全く関係ない締めになってしまいましたが・・・。

ここまでお読みいただき、ありがとうございました。

関連記事

www.tekizai.net