Test-Connectionコマンドレット
PowerShell Core 6.1には新しくTest-Connectionコマンドレットが移植されている。このコマンドレットは複数のホストに対してInternet Control Message Protocol (ICMP) ECHOリクエストパケットを送信する処理を行う。いわゆるpingのPowerShell Core版というものだ。
Test-Connectionコマンドレットを使うと対象ホストがネットワークに接続されているのかを調べることができる。このコマンドレットを使うと、対象のホストが到達可能である場合にはこの処理を行い、そうでない場合にはこちらの処理を行う、といった切り分けのスクリプトを記述することができるようになる。
Test-Connectionコマンドレットの使い方
Test-Connectionコマンドレットの基本的な使い方は、次のように引数にホスト名またはIPアドレスを指定するというものだ。指定したホストに対してICMP ECHOリクエストパケットが送信され、返信があったかどうかや時間が表示される仕組みになっている。
Test-Connectionコマンドレットの基本的な使い方
Test-Connection ホスト名
Test-Connectionコマンドレットは単一のホストではなく複数のホストを同時に指定することができる。その場合、次のようにカンマ区切りでホスト名を指定すればよい。なお、-ComputerNameオプションは省略可能なので指定しなくても動作する。
複数のホストを同時に指定する場合はカンマ区切りで指定する
Test-Connection -ComputerName ホスト名, ホスト名, ... ホスト名
Test-Connectionコマンドレットはpingのように送信するパケットをカスタマイズすることができる。たとえば次の例は送信回数やTTL、バッファサイズなどを指定してTest-Connectionコマンドレットを実行するときの使い方となる。
パケットをカスタマイズして実行する場合の例
Test-Connection -ComputerName ホスト名 -Count 送信数 -TTL TTL値 -BufferSize バッファサイズ
Test-Connectionコマンドレットを使うと、たとえば対象ホストが到達可能な場合にはリモートログインを実施し、そうでない場合には何もしない、といったような切り分け処理を記述できる。次のようにif制御構文にTest-Connectionコマンドレットを組み合わせればよい。オプション-Quietを指定しているところがポイントだ。
pingはネットワークにおけるホスト到達性を調べるもっとも基本的な方法であり、多くのシーンで活用されている。PowerShell Coreでもこの機能が利用できるようになったことで、これまでよりもネットワーク到達のチェックをより簡単に実施できるようになった。
今のところリモートログインしてPowerShell Coreを実行する方法についてはほとんど取り上げていないが、この機能を利用するとホストの管理をリモートホストに対して実施できるようになる。ある程度ローカルでのPowerShell Coreの使い方を説明したらリモートにおける扱いも取り上げていこうと思う。