2

私はPowerShellプログラミングに非常に慣れていません。データが利用可能な限りソケットストリームから読み取り、「q」を送信して接続を終了する次のスクリプトがあります。これを win 2003 server std、Power shell V2.0 で実行しています。pgm を実行すると、pgm からのテキストが出力され、読み取りとバッファリングが行われます。出力は次のようになります。

ポート 23 で aardwolf.org に接続する

while($stream.DataAvailable)  
       {  
     $read = $stream.Read($buffer, 0, 1024)  
write-Host $read  
if($read -gt 0)  
{  
      $outputBuffer += ($encoding.GetString($buffer, 0, $read))  
}  
    }## Read the user's command, quitting if they hit  

コードは次のとおりです。

# Interact with a service on a remote TCP port
param( [string] $remoteHost = "aardwolf.org",
[int] $port = 23     )

## Open the socket, and connect to the computer on the specified port 

write-host "Connecting to $remoteHost on port $port"  
$socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port) 
if($socket -eq $null) { return; } 

$stream = $socket.GetStream() 
$writer = new-object System.IO.StreamWriter($stream)

$buffer = new-object System.Byte[] 1024 
$encoding = new-object System.Text.AsciiEncoding
while($true)    
{    
## Allow data to buffer for a bit
start-sleep -m 500 
$outputBuffer = ""  
## Read all the data available from the stream, writing it to the       ## screen when   done.              
if($stream.CanRead)
{   
while($stream.DataAvailable)  
    {  
     $read = $stream.Read($buffer, 0, 1024) 
write-Host $read 
if($read -gt 0)
{ 
      $outputBuffer += ($encoding.GetString($buffer, 0, $read)) 
}
    }## Read the user's command, quitting if they hit 
}
write-Host $outputBUffer
   $command = "q"    
   $writer.WriteLine($command) 
   $writer.Flush()
break

} ## ストリームを閉じる if($writer -ne $null)
{ $writer.Close()
$stream.Close() }

問題を解決するための助けが必要です。

4

0 に答える 0