HOWTO · PowerShell

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

このチュートリアルでは、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` を編集します。
  1. 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 クライアント端末

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

    This is PowerShell Listen on Port Test
    

    ポートテストでリッスン

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

    ポート出力でリッスン

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