2017-08-24 89 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更新回答我的建議:-) –

相關問題