私は、TCP経由でXMLデータをダウンロードしているpowershellを持っています。私はすべてのデータをファイルに書き込む必要があります。レスポンスの各行は、ファイル内の新しい行に書き込まれる必要があります。以下のコードは最初の行だけを取得します。最初の数行は私が必要としないガベージデータなので、余分なreadlineを無視してください。回答が残っていない限り、どのように回答の各行を書き続けることができますか?これについて他に何も見つかりませんでした。Windows PowerShellは、行がなくなるまで行を読み込みます。
$server = "192.168.1.173"
$port = "45678"
$password = "password"
while (1) {
$tcpConnection = New-Object System.Net.Sockets.TcpClient($server, $port)
$tcpStream = $tcpConnection.GetStream()
$reader = New-Object System.IO.StreamReader($tcpStream)
$writer = New-Object System.IO.StreamWriter($tcpStream)
$writer.AutoFlush = $true
if ($tcpConnection.Connected) {
$writer.Write("<StageDisplayLogin>");
$writer.Write($password);
$writer.WriteLine("</StageDisplayLogin>");
$ProPresenterData = $reader.ReadLine()
$ProPresenterData = $reader.ReadLine()
$ProPresenterData = $reader.ReadLine()
$ProPresenterData | Out-File -Encoding "UTF8" ProPresenter.xml
Start-Sleep -m 200
while ($tcpStream.DataAvailable) {
$ProPresenterData = $reader.ReadLine()
Add-content -Path ProPresenter.xml -Value "$ProPresenterData"
}
}
$reader.Close()
$writer.Close()
$tcpConnection.Close()
"Wrote file ProPresenter.xml"
$ProPresenterData
Start-Sleep -m 500
}
修正。データは絶えず更新されていると私は信じている。大量のデータをファイルにどのようにダウンロードできるのかよく分かりません。生のデータを返すだけのTCPリクエストです。したがって、それは実際には「ファイル」自体ではありません。 whiledataavailableがループのために機能しないのはなぜですか? –