PowerShellで指定したポートのTCPが開放されているか調べる方法・Test-NetConnection

サーバに対して、ポートが開いているどうかの確認のため、Windowsであればtelnetコマンドをインストールして
telnetコマンドにポート番号とサーバを指定しポートが開放されており、サービスが動作しているかどうかを確認することができました。
PowerShellでは、Test-NetConnectionコマンドレットを使用することにより簡単に指定ポートが開放されているかどうか確認することができます。
以下にいくつかの実行例を記します。


関連記事

man Test-NetConnection

Test-NetConnectionコマンドレットの使用方法です。

PS C:\> man Test-NetConnection

名前
    Test-NetConnection

構文
    Test-NetConnection [[-ComputerName] <string>]  [<CommonParameters>]

    Test-NetConnection [[-ComputerName] <string>] [-CommonTCPPort] {HTTP | RDP | SMB | WINRM}  [<CommonParameters>]

    Test-NetConnection [[-ComputerName] <string>]  [<CommonParameters>]

    Test-NetConnection [[-ComputerName] <string>]  [<CommonParameters>]


エイリアス
    TNC


注釈
    Get-Help を実行しましたが、このコンピューターにこのコマンドレットのヘルプ ファイルは見つかりませんでした。ヘルプの一部だけが表示されています。
        -- このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Help を使用してください。

ポート番号を指定して確認

以下のようにポート番号を指定してHTTPの80ポートが開放されているかを確認します。
オプション-Portでポート番号を指定します。

01.png
 

#bre(02.png)

上記のスクリーンショットをみると、Waiting for responseのメッセージが出力されています。
これを非表示にする場合は、以下のようにします。

Waiting for response メッセージを非表示にする

非表示にするには、$ProgressPreferenceにSilentlyContinueを設定します。 変更前は以下のように Continue が設定されています。

PS C:\> $ProgressPreference
Continue

非表示にするには、以下のように変更します。

PS C:\> $ProgressPreference = "SilentlyContinue"

この設定後、Test-NetConnectionコマンドを実施してください。
Waitng for responseのメッセージは表示されなくなります。

プロトコルを指定して確認

オプションの-CommonTCPPortにプロトコル名を指定して実行してみます。

HTTPプロトコルと指定した場合

PS C:\> Test-NetConnection -ComputerName win.just4fun.biz -CommonTCPPort HTTP


ComputerName     : win.just4fun.biz
RemoteAddress    : 157.7.107.123
RemotePort       : 80
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.1.24
TcpTestSucceeded : True

SMBプロトコルと指定した場合

PS C:\> Test-NetConnection -ComputerName pi.local -CommonTCPPort SMB


ComputerName     : pi.local
RemoteAddress    : 192.168.1.81
RemotePort       : 445
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.1.24
TcpTestSucceeded : True

エラーの場合

ポート開放されていない場合の出力になります。
TcpTestSucceededがFalseになっているのが確認できます。

True/Falseのみ返却してほしい場合

ポート開放されているかどうかの戻り値としてTrueまたはFalseの返却のみでよい場合は、-InformationLevel Quietオプションを追記します。

PS C:\> Test-NetConnection -ComputerName pi.local -Port 22 -InformationLevel Quiet
True
PS C:\> Test-NetConnection -ComputerName pi.local -Port 23 -InformationLevel Quiet
警告: TCP connect to (192.168.1.81 : 23) failed
False

以上、PowerShellのTest-NetConnectionコマンドレットを使用してポートが開放されているかどうかを確認する方法でした。



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS