0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Windows10]複数の宛先へpingを1回送信するスクリプト[PowerShell]

Last updated at Posted at 2023-01-13

はじめに

遠方の拠点から「インターネットやシステムへの接続が遅い」という問い合わせがよくあるが、通常時の速度を定点測定していないため遅さが体感速度でしか計れず、速度を計る指標がないという問題を抱えている。
まずはお金をかけずに複数拠点-本社間の通常状態での通信速度を収集したいと考え、
Powershellにてスクリプトを作成した。

環境

Windows10 22H2 64bit Pro
Powershell 5.1.19041.2364

処理内容

ping_v1.ps1
#ログファイル名へ付加するタイムスタンプのフォーマット
$date = Get-Date -Format _yyyy_MMdd_HHmmss

#pingの送信先を記載したtarget.txtを$fileへ格納
$file = Get-Content ".\target.txt"

#ログファイルの出力先として、ユーザープロファイル(%userprofile%)のパスを$outputへ格納
$output = $env:USERPROFILE

foreach ($target in $file) {
 #$fileに記載された宛先へ一度pingを送信
  $p=ping $target -n 1
 
  #pingの結果から統計情報等を除いた部分をユーザープロファイル直下へ出力
  $p[1]+$p[2] >> $output\pinglog_$date.txt
  }

target.txt記載例

target.txt
8.8.8.8
www.yahoo.co.jp

使い方

  1. [target.txt]を作成し、pingを送付したいホスト名 or IPアドレスを記載。
    アドレス1つごとに改行する。
  2. [target.txt]、[ping_v1.ps1]を同一ディレクトリに配置する。
  3. [ping.ps1]を実行
  4. 実行ユーザーのユーザープロファイル直下に[pinglog_"yyyy_MMdd_HHmmss".txt]が出力される

ログの例

8.8.8.8 に ping を送信しています 32 バイトのデータ:8.8.8.8 からの応答: バイト数 =32 時間 =14ms TTL=115
edge12.g.yimg.jp [182.22.25.124]に ping を送信しています 32 バイトのデータ:182.22.25.124 からの応答: バイト数 =32 時間 =15ms TTL=56

余談

本当はping結果をそのままテキストに出力ではなく、宛先と応答時間(ms)をテーブル形式で表示させたかったが
powershellの習熟度が足りず断念。。。と思っていたらうまくいった。

ping_v2.ps1
#ログファイル名へ付加するタイムスタンプのフォーマット
$date = Get-Date -Format _yyyy_MMdd_HHmmss

#pingの送信先を記載したtarget.txtのパスを$fileへ格納
$file = Get-Content ".\target.txt"

#ログファイルの出力先として、ユーザープロファイル(%userprofile%)のパスを$outputへ格納
$output = $env:USERPROFILE

#ハッシュテーブル$arrayを作成
$array = @{}
foreach ($target in $file) {
    #$fileに記載された宛先へ一度pingを送信し$pへ結果を格納
    $p=ping $target -n 1

    #応答速度が =xxmsという形式になっている為、=を削除し$p1へ格納
    $p1 = $p[1]+$p[2] -replace "=", ""

    #半角スペースを区切り文字とし配列化、$p2へ格納
    $p2 = $p1.split(" ")

    #$arrayへ宛先、応答速度を追加
    $array.add($p2[0],$p2[10])
    }
#$arrayをテキスト形式でユーザープロファイル直下へ出力
$array >> $output\pinglog_$date.txt
Name                           Value                          
----                           -----                          
edge12.g.yimg.jp               26ms
8.8.8.8                        17ms

参考にさせていただいたページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?