PowerShell のTest-NetConnectionで特定 TCP ポートが開いているか確認する

特定 TCP ポートが開いているかを確認するには telnet でポート番号を指定して接続できるか確認するのですが、PowerShell スクリプトだとこの方法は使えません。

Windows 8.1 / Windows Server 2012 R2 以降であれば、Test-NetConnection で確認することができます

Test-NetConnection [ターゲット] -Port [ポート番号]

WinRM ポート(TCP/5985)が開いているかを確認する場合は、以下のようにします(TcpTestSucceeded を見ます)

PS C:\> Test-NetConnection dc01 -Port 5985


ComputerName           : dc01
RemoteAddress          : 2400:400e:400::dc01
RemotePort             : 5985
InterfaceAlias         : Host
SourceAddress          : 2400:400e:400:0:7143:c7df:5480:3ecb
PingSucceeded          : True
PingReplyDetails (RTT) : 2 ms
TcpTestSucceeded       : True

単純に True/False を得るのであれば、-InformationLevel Quiet オプションを指定します。

テスト中に緑帯で表示される PowerShell 通知が表示されるのがうっとうしい場合は、特殊変数の $ProgressPreference に SilentlyContinue をセットすると緑帯が表示されなくなります。

$ProgressPreference=”SilentlyContinue”

ちょっと残念なのは、Test-NetConnection は ping 確認する仕様なので、ICMP を閉じているホストがターゲットだとしばらく待たされます。

タイトルとURLをコピーしました