Windowsで設定の確認やシステムの情報を取得するというと、ウインドウに配置されたアイコンをマウスでクリックする操作を思い浮かべるだろう。しかしWindowsには「コマンド」というディープな世界がある。一見味気ない黒バックのウインドウに、黙々と文字を打ち込んで操作する――。コマンドを使うとGUI(Graphical User Interface)ではできない細かいところまで操作できる。しかも複数組み合わせて一気に作業させることも可能だ。これを使うためのソフトウエアがPowerShellやコマンドプロンプトである。なかでも便利なのがネットワーク管理だ。トラブルが発生したときの原因を探るコマンドを紹介しよう。
PowerShellとコマンドプロンプトはそれぞれコマンド体系が異なる。PowerShellのコマンドは「コマンドレット」と呼ばれる。コマンドレットは多数あって覚えにくいが、「動詞+対象の名前」なのである程度役割を推測できる。またPowerShellではコマンドプロンプトのコマンドを実行できる。そこでPowerShellのコマンドレットを中心に紹介する。コマンドプロンプトに対応するコマンドもある場合は併せて記載する。
ネットワークコマンドを使う場合は、PowerShellを管理者権限で起動するとよい。Windowsのメニューから「Windows PowerShell」を開き、「Windows PowerShell」の項目を右クリックして、「管理者として実行する」という項目を選択する。またはWindowsメニューを右クリックして表示されるメニューに「Windows PowerShell(管理者)」の項目があるので、これを選択する。ちなみにWindowsのメニューから「Windows PowerShell」を選択すると、「Windows PowerShell ISE」も使える。入力するコマンドレットやオプションの候補を表示して選択できる「IntelliSense」が働くため、長いコマンドレットを利用する際に便利だ。
疎通確認なら「Test-Connection」と「ping」
PCがつながっているネットワークを調べるコマンド群から紹介しよう。まず覚えておきたいコマンドレットは「Test-Connection」だ。引数としてホスト名またはIPアドレスを指定すると、相手とIPで通信できるかどうか確認できる。コマンドプロンプトでは「ping」コマンドがこれに相当する。ICMP(Internet Control Message Protocol)パケットを利用する。
Test-Connectionを実行すると、4回の実行結果が表示される。Sourceには実行したPC名が表示され、Destinationには目的のホスト名が表示される。右側にはICMPのパケットサイズをBytesの欄に、応答が返ってくるまでの時間はTimesの欄にミリ秒で表示する。pingコマンドを実行するとほぼ同様の結果が得られる。pingではパケットが何回ネットワークをまたぐのかをカウントするのに使うTTL(Time To Live)なども表示される。
LANケーブルを敷設するといった作業の際で疎通を確認し続けたい場合もある。4回よりも多く確認したい場合は、
Test-Connection -Count 10 example.com
PowerShellではパイプやスクリプトで処理を記述しやすい。この特徴を利用して自動処理や繰り返し処理を実行できる。例えば、
100..180 | %{Test-Connection "192.168.0.$_" -Count 1 -ErrorAction SilentlyContinue}