We are no longer accepting contributions to Documentation. Please see our post on meta.

PowerShell

TCP Communication with PowerShell 3.0–5.0

1.0
2.0
3.0
4.0
5.0
5.1

This draft deletes the entire topic.

Examples

  • 2
    Function Receive-TCPMessage {
        Param ( 
            [Parameter(Mandatory=$true, Position=0)]
            [ValidateNotNullOrEmpty()] 
            [int] $Port
        ) 
        Process {
            Try { 
                # Set up endpoint and start listening
                $endpoint = new-object System.Net.IPEndPoint([ipaddress]::any,$port) 
                $listener = new-object System.Net.Sockets.TcpListener $EndPoint
                $listener.start() 
     
                # Wait for an incoming connection 
                $data = $listener.AcceptTcpClient() 
            
                # Stream setup
                $stream = $data.GetStream() 
                $bytes = New-Object System.Byte[] 1024
    
                # Read data from stream and write it to host
                while (($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){
                    $EncodedText = New-Object System.Text.ASCIIEncoding
                    $data = $EncodedText.GetString($bytes,0, $i)
                    Write-Output $data
                }
             
                # Close TCP connection and stop listening
                $stream.close()
                $listener.stop()
            }
            Catch {
                "Receive Message failed with: `n" + $Error[0]
            }
        }
    }
    

    Start listening with the following and capture any message in the variable $msg:

    $msg = Receive-TCPMessage -Port 29800
    
  • 2
    Function Send-TCPMessage { 
        Param ( 
                [Parameter(Mandatory=$true, Position=0)]
                [ValidateNotNullOrEmpty()] 
                [string] 
                $EndPoint
            , 
                [Parameter(Mandatory=$true, Position=1)]
                [int]
                $Port
            , 
                [Parameter(Mandatory=$true, Position=2)]
                [string]
                $Message
        ) 
        Process {
            # Setup connection 
            $IP = [System.Net.Dns]::GetHostAddresses($EndPoint) 
            $Address = [System.Net.IPAddress]::Parse($IP) 
            $Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port) 
        
            # Setup stream wrtier 
            $Stream = $Socket.GetStream() 
            $Writer = New-Object System.IO.StreamWriter($Stream)
    
            # Write message to stream
            $Message | % {
                $Writer.WriteLine($_)
                $Writer.Flush()
            }
        
            # Close connection and stream
            $Stream.Close()
            $Socket.Close()
        }
    }
    

    Send a message with:

    Send-TCPMessage -Port 29800 -Endpoint 192.168.0.1 -message "My first TCP message !"
    

    Note: TCP messages may be blocked by your software firewall or any external facing firewalls you are trying to go through. Ensure that the TCP port you set in the above command is open and that you are have setup the listener on the same port.

Please consider making a request to improve this example.

Syntax

Syntax

Parameters

Parameters

Remarks

Remarks

Still have a question about TCP Communication with PowerShell? Ask Question

Topic Outline


    We are no longer accepting contributions to Documentation. Drafts cannot be modified.