IT~健康情報まで、ライフハック系情報発信ブログ

DEBUG MODE

PowerShell サンプルコード

【現場で使えるサンプルコード】Test-NetConnectionコマンドを使用したPort疎通確認用スクリプト(実行結果をテキストファイルに出力する機能付き)

投稿日:

【(念のための)免責事項】サンプルコードの使用は、ソースの内容を理解した上で自己責任でお願いしますm(._.)m

 

Test-NetConnectionコマンドで TCP ポートの疎通確認

PowerShellのTest-NetConnectionコマンドを使用すれば指定した TCP ポートが開いているか確認することが出来ます。

※Test-NetConnectionはWindows 8.1 / Windows Server 2012 R2 以降で使用できます。

 

コマンドの実行結果をテキストファイルに出力したい

ちょっとした疎通確認であれば、その場でコマンドをたたいて疎通を確認して終わりですが、

本格的なNW・サーバ移行では疎通確認スクリプトを作成し、その結果をテキストファイルに出力しエビデンスとして保管しておく必要があるケースがあります。

 

サンプルコード概要

今回は、そんなケースで使える、Test-NetConnectionコマンドを使用したPort疎通確認用スクリプト(実行結果をテキストファイルに出力する機能付き)のサンプルコードを作成いたしましたので公開いたします。

 

なお、パワーシェルのスクリプトファイル(.ps1)は通常ダブルクリックで実行できません。

そのため、今回は、現場で即座に実行できるよう、パワーシェルのスクリプトファイル実行用のバッチファイルも用意しました。

 

ファイル数は以下2つです。

  • 疎通確認用PoweShellスクリプト.ps1
  • 疎通確認用PoweShellスクリプト実行バッチ.bat

「疎通確認用PoweShellスクリプト実行バッチ.bat」を実行すれば「疎通確認用PoweShellスクリプト.ps1」が呼び出され、疎通確認が出来ます。

 

サンプルコード

疎通確認用PoweShellスクリプト.ps1

#パラメータ準備
#①実行サーバ名を取得
$ServerName = hostname
#②実行時間を取得
$JikkouJikan = Get-Date -DisplayHint DateTime
#③コマンド実行結果の出力先フォルダを指定
$LogFilePath = "<コマンド実行結果の出力先フォルダパス(末尾「\」要)>"
#④$LogFilePathにファイル名を付与し、コマンド実行結果の出力先ファイルを指定
$LogFile = $LogFilePath + "疎通結果_"+$ServerName+".txt"

#実行結果の記録スタート
Start-Transcript $LogFile -Append

echo "" #改行
echo "" #改行
echo 接続元サーバ:$ServerName #サーバ名を出力
echo 実行時間:$JikkouJikan #実行時間を出力
echo "" #改行
echo "【想定結果:以下全てTrue】"
Test-NetConnection <疎通確認先IPアドレス> -Port <疎通確認先Port番号> #必要に応じて複数行作成
echo "【想定結果:以下全てFalse】"
Test-NetConnection <疎通確認先IPアドレス> -Port <疎通確認先Port番号> #必要に応じて複数行作成

 

疎通確認用PoweShellスクリプト実行バッチ.bat

powershell -NoProfile -ExecutionPolicy Unrestricted <疎通確認用PoweShellスクリプ配置パス>\疎通確認用PoweShellスクリプト.ps1
pause

 

ログファイル出力イメージ(疎通結果_<スクリプト実行サーバ名>.txt)

.txt)" >トランスクリプトが開始されました。出力ファイル: <コマンド実行結果の出力先フォルダ>


接続元サーバ:<スクリプト実行PC名(接続元)>
実行時間:06/09/2019 20:08:38

【想定結果:以下全てTrue】


ComputerName     : 192.168.11.6
RemoteAddress    : 192.168.11.6
RemotePort       : 445
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.11.9
TcpTestSucceeded : True

ComputerName     : 192.168.11.6
RemoteAddress    : 192.168.11.6
RemotePort       : 445
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.11.9
TcpTestSucceeded : True

ComputerName     : 192.168.11.6
RemoteAddress    : 192.168.11.6
RemotePort       : 445
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.11.9
TcpTestSucceeded : True

【想定結果:以下全てFalse】
警告: TCP connect to (192.168.11.6 : 80) failed
ComputerName           : 192.168.11.6
RemoteAddress          : 192.168.11.6
RemotePort             : 80
InterfaceAlias         : Wi-Fi
SourceAddress          : 192.168.11.9
PingSucceeded          : True
PingReplyDetails (RTT) : 4 ms
TcpTestSucceeded       : False



PS>$global:?
True
**********************
Windows PowerShell トランスクリプト終了
終了時刻: 20190609200912
**********************

 

-PowerShell, サンプルコード
-

Copyright© DEBUG MODE , 2022 All Rights Reserved Powered by STINGER.