PowerShell のポートでリッスンする

Sheeraz Gul 2023年6月21日
PowerShell のポートでリッスンする

このチュートリアルでは、PowerShell でポートをリッスンする方法を示します。

ポートでリッスンする PowerShell

ポートでのリッスンは、PowerShell と段階的なコマンドを使用して実現できます。 PowerShell で [System.Net.Sockets.TcpListener]Port コマンドを使用してリスナーを初期化できます。

PowerShell を使用してポートでリッスンするには、次の手順に従います。

  1. まず、管理者として PowerShell を開く必要があります。 [スタート] メニューで PowerShell を検索し、PowerShell アイコンを右クリックして、[管理者として実行] をクリックします。

    システムが許可を求める場合があります。 はいをクリックします。

  2. 次のステップで PowerShell スクリプトを作成します。 次のコマンドを実行します。

    New-Item 'C:\Users\Sheeraz\DemoTCPServer.ps1' -type file
    

    上記のコマンドは、パス C:\Users\SheerazDemoTCPServer.ps1 という名前の PowerShell ファイルを作成します。 出力を参照してください。

    	Directory: C:\Users\Sheeraz
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----         11/3/2022   4:02 PM              0 DemoTCPServer.ps1
    
  3. ファイルが作成されたら、次のステップはスクリプトの編集です。 次のコマンドを実行します。

    ise C:\Users\Sheeraz\DemoTCPServer.ps1
    

    上記のコマンドは、PowerShell ISE でファイル DemoTCPServer.ps1 を編集します。

  4. DemoTCPServer.ps1 スクリプトの段階的なプロセスに従います。

    • まず、ポート、テキスト ファイル、およびサーバー バナーの変数を初期化します。
    • 次に、指定されたポートにエンドポイントを作成します。
    • 次に、New-Object System.Net.Sockets.TcpListener $DemoEndpoint コマンドを使用して、リスナーを持つ TCP ポートを作成します。 これは、ポートでリッスンするのに役立ちます。
    • TCP ポートを開始します。
    • TCP ポートが TCP クライアントを受け入れることを許可します。
    • TCP クライアントのストリームを作成します。
    • 次に、ストリームを使用してライターを作成します。
    • バナーを使用して行を書き込み、ライターをフラッシュします。
    • ここで、ポートでリッスンするストリームを読み取るためのバッファを作成します。
    • ループを使用して、ストリームの各行を読み取ります。
    • ポートでリッスンを実行し、バッファ、ストリーム、および TCP クライアントを破棄します。
    • 最後に、TCP ポートを停止します。 これらの手順を PowerShell スクリプト DemoTCPServer.ps1 に実装しましょう。
```powershell
$DemoPort = 8080
$DemoFile = 'C:\Users\Sheeraz\demo.txt'
$DemoBanner = "Connection: OK"

$DemoEndpoint = New-Object System.Net.IPEndPoint([IPAddress]::Any,$DemoPort)
$DemoTCPPort = New-Object System.Net.Sockets.TcpListener $DemoEndpoint
$DemoTCPPort.Start()
Write-Output "The TCP Port $DemoPort is Open Now"
$AcceptIngTcp = $DemoTCPPort.AcceptTcpClient()
$Stream = $AcceptIngTcp.GetStream()
$DemoWriter = New-Object System.IO.StreamWriter($Stream)
$DemoBanner | % {
			$DemoWriter.WriteLine($_)
			$DemoWriter.Flush()
		}

while($true) {
$DemoBuffer = New-Object System.IO.StreamReader $Stream
$DEMOLINE = $DemoBuffer.ReadLine()
if ($DEMOLINE -eq "quit") {
	break
}
else {
$DEMOLINE
$DEMOLINE |  Out-File $DemoFile -Append
}
}
$DemoBuffer.Dispose()
$Stream.Dispose()
$AcceptIngTcp.Dispose()
$DemoTCPPort.Stop()
Write-Output "The TCP Port $DemoPort is Closed"
```
  1. スクリプトが作成されたら、保存します。 今度はスクリプトを実行して、リッスン オン ポート操作で TCP ポートを作成します。 次のコマンドを実行します。

    PowerShell.exe -ExecutionPolicy Bypass -File C:\Users\Sheeraz\DemoTCPServer.ps1
    

    上記のコマンドは、TCP ポートを開始し、ポートをリッスンします。 コマンドの出力は次のとおりです。

    The TCP Port 8080 is Open Now
    
  2. リモート コンピューターの TCP ポートに接続するには、cmd で次の telnet コマンドを実行します。 まず、telnet サービスが有効になっていることを確認します。これは、コントロール パネル>プログラム>Windows の機能の有効化または無効化 から確認できます。

    次のコマンドを参照してください。

    telnet 10.10.10.10 8080
    
  3. ここ からダウンロードできる PuTTY のような telnet クライアント アプリケーションを使用することもできます。 接続タイプでその他Telnetを選択することを忘れないでください。

    以下のスクリーンショットを参照してください。

    PuTTY Telnet クライアント

  4. IP とポートを挿入し、[開く] をクリックします。

    PuTTY クライアント端末

  5. これで、このターミナルを使用して、接続を介してデータを送信し、ポートでリッスンできます。 例えば:

    This is PowerShell Listen on Port Test
    

    ポートテストでリッスン

  6. 上記で送信されたデータは、'C:\Users\Sheeraz\demo.txt'というファイルに保存されます。これは、ポートでのリッスンが実行されることを意味します。

    ポート出力でリッスン

  7. 最後に、TCP 接続を閉じるには、quit コマンドを実行します。

著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook