2017-08-24 92 views
2

我想使用powershell套接字服务器来获取远程命令。 但我只能得到一次远程命令。 有人可以给我一个帮助吗?谢谢。使用powershell套接字服务器获取远程命令

这里是我的代码:

$endpoint = new-object System.Net.IPEndPoint([system.net.ipaddress]::any, 12346) 
$listener = new-object System.Net.Sockets.TcpListener $endpoint 
while($true) 
{ 
    $listener.Start() 
    $client = $listener.AcceptTcpClient() 

    [System.IO.StreamReader]$stream = new-object System.IO.StreamReader -argumentList $client.GetStream() 
    while($true) 
    { 
     $line = $stream.ReadLine() 
     while($line -ne $null){ 
      Write-Host $line -ForegroundColor Yellow 
     } 

    } 
    $client.Close() 
    $listener.Stop() 
} 
+0

你是什么意思“可以得到远程命令一次”?解释一下你的期望 –

+0

我使用客户端程序发送命令。 我第一次执行客户端,我发送的命令通常在PowerShell中显示。 但第二次后,命令不显示。 –

回答

1

的问题是,因为$线未分配初始分配后的新价值的同时,检查($线-ne $ NULL)永远是真实的, 试这个:

$endpoint = new-object System.Net.IPEndPoint([system.net.ipaddress]::any, 12346) 
$listener = new-object System.Net.Sockets.TcpListener $endpoint 
while($true) 
{ 
    $listener.Start() 
    $client = $listener.AcceptTcpClient() 

    [System.IO.StreamReader]$stream = new-object System.IO.StreamReader -argumentList $client.GetStream() 
    while($true) 
    { 

     do { 
     $line = $stream.ReadLine() 
     Write-Host $line -ForegroundColor Yellow 
     }while($line -ne $null) 


    } 
    $client.Close() 
    $listener.Stop() 
} 
+0

谢谢,但代码仍然不起作用。 –

+0

@FroceLu你得到了什么错误,我试过上面的程序,我共享和使用telnet连接到端口,并通过多个命令,它正在接受 –

+0

@FroceLu更新回答我的建议:-) –

相关问题