2017-11-15 1 views
1

Ich versuche, ein Powershell-Skript zu schreiben, das mit einigen Java-Server-Code kommuniziert. Das Skript ruft die folgende Funktion auf, um mit dem Server zu kommunizieren, und der Server druckt gerade die Nachricht aus, die er empfängt.Powershell Scripting Code Ausführungsproblem nach dem Hinzufügen einer While-Schleife

Function Send-StringOverTcp ( 
    [Parameter(Mandatory=$True)][String]$DataToSend, 
    [Parameter(Mandatory=$True)][UInt16]$Port) 
{ 
    Try { 
     $IPAddress = "XX.XXX.XX.X"       #ip of server 
     $IPAddress = [IPAddress]$IPAddress.Trim() 

     $ErrorActionPreference = "Stop" 
     $TCPClient = New-Object Net.Sockets.TcpClient 
     $IPEndpoint = New-Object Net.IPEndPoint($IPAddress, $Port) 
     $TCPClient.Connect($IPEndpoint) 
     Write-Host -ForegroundColor Green "Connection established with 
$IPAddress on port $Port" 

     $NetStream = $TCPClient.GetStream() 
     [Byte[]]$Buffer = [Text.Encoding]::ASCII.GetBytes($DataToSend) 
     $NetStream.Write($Buffer, 0, $Buffer.Length) 
     $NetStream.Flush() 
     Write-Host -ForegroundColor Green "Data sent to server" 

     while($true) { 

     } 

     If ($NetStream) { $NetStream.close() } 
     If ($TCPClient) { $TCPClient.close() } 
    } catch { 
    Write-Error $_.Exception.ToString() 
    Read-Host -Prompt "The above error occurred. Press Enter to exit." 
    } 
} 

Im Skript, wenn ich, bevor ich das TCPClient schließen nicht die while-Schleife haben, wird die Nachricht ohne Probleme auf dem Server und den Server druckt sie aus gesendet. Wenn ich diese while-Schleife hinzufüge, sendet das Skript die Nachricht jedoch nie wirklich an den Servercode, bis die while-Schleife beendet ist. Gibt es eine Möglichkeit, die Zeilen

zu erhalten, bevor die while-Schleife beendet wird. Gibt es einen Grund, warum Powershell diese Anweisungen nicht in der richtigen Reihenfolge vor der while-Schleife ausführt, statt danach?

Antwort

0

Ich bin mir immer noch nicht sicher, was Powershell dazu gebracht hat, so zu handeln. Falls jemand ein ähnliches Problem hat, habe ich mich darum gekümmert, indem ich die while-Schleife in ihre eigene Funktion gezogen habe und sie ohne Probleme aufgerufen habe.

Verwandte Themen