1
一部のJavaサーバーコードと通信するPowershellスクリプトを作成しようとしています。スクリプトは以下の関数を呼び出してサーバーと通信し、現在サーバーは受信したメッセージを出力しています。スクリプトでWhileループを追加した後のPowershellスクリプトコード実行の問題
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."
}
}
私がれるtcpClientを閉じる前に、私はwhileループを持っていない場合は、メッセージがサーバーに送信され、サーバは問題なく、それを出力します。しかし、whileループを追加すると、whileループが終了するまで、スクリプトは実際にはサーバーコードにメッセージを送信しません。 whileループが終了する前に、行を取得する方法はありますか?
$NetStream.Write($Buffer, 0, $Buffer.Length)
$NetStream.Flush()
が実行されます。理由はありますか?Powershellは、whileループの前に正しい順序でこれらの文を実行していませんか?