Windows PowerShellを使ってtelnetと同等のネットワーク確認を行いたいと思ったことはないでしょうか。
PowerShellにはtelnetコマンドの代替として活用できる「Test-NetConnection」コマンドレットが用意されており、telnetクライアントをインストールしなくてもポートの疎通確認が可能です。
本記事では、PowerShellでのtelnet接続方法・Test-NetConnectionの使い方・PowerShellからtelnetコマンドを直接実行する方法について、詳しく解説していきます。
ネットワーク管理やポート疎通確認の効率化を目指す方に役立つ内容をお届けします。
PowerShellでtelnetを使うための準備とアプローチ
それではまず、PowerShellでtelnetを使うための準備とアプローチについて解説していきます。
PowerShellでtelnetを活用する方法は大きく二つあります。
一つは従来のtelnetコマンドをPowerShellから直接呼び出す方法、もう一つはPowerShell標準のTest-NetConnectionコマンドレットを使う方法です。
PowerShellからtelnetコマンドを直接実行する方法
PowerShellはコマンドプロンプトと同様に従来のWindowsコマンドを実行できるため、telnetクライアントがインストールされていればそのままtelnetコマンドを使用できます。
PowerShellを起動し、以下のコマンドを入力します。
telnet [ホスト名またはIPアドレス] [ポート番号]
例:telnet 192.168.1.100 80
※telnetクライアントが有効化されていない場合は先にインストールが必要
telnetクライアントが有効化されていない状態でコマンドを実行すると「用語 ‘telnet’ は……認識されません。」というエラーが表示されます。
この場合はWindowsの機能追加でtelnetクライアントを有効化するか、Test-NetConnectionを代替として使用するとよいでしょう。
PowerShellでtelnetクライアントをインストールする方法
PowerShellを管理者権限で起動して以下のコマンドを実行することで、telnetクライアントを有効化できます。
管理者権限のPowerShellで実行:
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
または(Windows 10・11でも使用可能な代替コマンド):
dism /online /Enable-Feature /FeatureName:TelnetClient
PowerShellのEnable-WindowsOptionalFeatureコマンドを使う方法は、スクリプト化が容易で複数台への一括導入にも向いています。
PowerShellの実行ポリシーとtelnetの関係
PowerShellにはスクリプトの実行を制御する「実行ポリシー」が設定されており、この設定によってはtelnet関連のスクリプトが実行できない場合があります。
現在の実行ポリシーは「Get-ExecutionPolicy」コマンドで確認でき、必要に応じて管理者権限で「Set-ExecutionPolicy RemoteSigned」などの設定変更が必要となることがあるでしょう。
Test-NetConnectionによるtelnet代替の使い方
続いては、PowerShell標準コマンドレット「Test-NetConnection」の使い方を確認していきます。
Test-NetConnectionはtelnetの代替として使えるPowerShell標準ツールであり、追加インストールなしにポート疎通確認が行える点が大きな利点です。
Test-NetConnectionの基本構文と使い方
Test-NetConnectionコマンドレットの基本的な使い方は以下の通りです。
基本構文:Test-NetConnection -ComputerName [ホスト名またはIP] -Port [ポート番号]
例1:Test-NetConnection -ComputerName 192.168.1.1 -Port 80
例2:Test-NetConnection -ComputerName smtp.example.com -Port 25
例3:Test-NetConnection google.com -Port 443
結果例:TcpTestSucceeded : True(接続成功) / False(接続失敗)
telnetと異なり、Test-NetConnectionは接続の成否を「True/False」で明示的に示すため、スクリプトでの判定処理がしやすいという大きな利点があります。
Test-NetConnectionの詳細オプション
Test-NetConnectionにはポート確認以外にも便利なオプションが用意されています。
-InformationLevel Detailed:詳細な接続情報を表示(レイテンシ・ルートなど)
-TraceRoute:接続先までの経路(ルート)をトレースする
-DiagnoseRouting:ルーティングの診断情報を表示する
例:Test-NetConnection -ComputerName google.com -TraceRoute
Test-NetConnectionはtelnetの単純なポート疎通確認機能を超えた総合的なネットワーク診断ツールとして活用できます。
PowerShellスクリプトでの複数ポート一括確認
Test-NetConnectionをPowerShellスクリプトに組み込むことで、複数のホスト・ポートの疎通を一括で確認することが可能です。
たとえば複数のサーバーについてHTTP・HTTPS・SMTPの各ポートが開いているかどうかをループ処理で確認し、結果をCSVファイルに出力するといった自動化が実現できます。
この自動化はサーバー構築後の動作確認やネットワーク設定変更後の一括チェックなどに大変役立つでしょう。
PowerShellでのtelnet活用に関するTipsと注意点
続いては、PowerShellでのtelnet活用に関するTipsと注意点を確認していきます。
PowerShellとtelnet・Test-NetConnectionを組み合わせる際に知っておくと便利な情報をまとめます。
PowerShellプロファイルにエイリアスを設定する
Test-NetConnectionのコマンド名が長いと感じる場合は、PowerShellプロファイルにエイリアスを設定しておくと便利です。
例:「tnc」というエイリアスを設定する場合
Set-Alias tnc Test-NetConnection
プロファイルに追加することで毎回のセッションで使えるようになります。
実はTest-NetConnectionには標準で「tnc」というエイリアスが付属していることが多いため、「tnc google.com -Port 443」のように短縮して使えることもあります。
エイリアスを活用することで日常的なネットワーク確認作業の効率が上がるでしょう。
PowerShellでのtelnet接続エラーの対処法
PowerShellからtelnetを実行したときに発生しやすいエラーとその対処法をまとめます。
「’telnet’は認識されません」というエラーはtelnetクライアントが有効化されていないことが原因であり、前述のEnable-WindowsOptionalFeatureコマンドで解決できます。
「Test-NetConnectionでTcpTestSucceeded: Falseが返る」場合はファイアウォール・ポート番号の誤り・サービス未起動などが考えられるため、接続先の設定を確認する必要があります。
PowerShellのセキュリティとtelnetの注意点
PowerShellからtelnetを使う場合でも、telnet自体のセキュリティ上の問題(平文通信)は変わりません。
PowerShell環境でリモートアクセスが必要な場合は、telnetではなくPowerShell Remotingまたは通常のSSH接続を選ぶことがセキュリティ上の正しい判断となります。
telnetはあくまでポート疎通確認・プロトコルテストの補助ツールとして位置づけ、認証が必要なリモート管理には使わない運用を徹底しましょう。
まとめ
本記事では、PowerShellでtelnetを使う方法・Test-NetConnectionコマンドレットの活用・PowerShellスクリプトへの応用について解説してきました。
PowerShellではtelnetクライアントを有効化すれば従来のtelnetコマンドをそのまま実行でき、telnetがない環境でもTest-NetConnectionコマンドでポート疎通確認が可能です。
Test-NetConnectionはtelnetよりも豊富な診断情報を提供し、スクリプト化にも優れているため、PowerShell環境でのネットワーク確認作業においては積極的に活用したいコマンドレットといえるでしょう。
telnetとTest-NetConnectionを上手に使い分けながら、PowerShellによるネットワーク管理スキルを高めていきましょう。