Powershell socket的简单应用

来源:互联网 发布:99宿舍网软件下载 编辑:程序博客网 时间:2024/05/17 22:30

WMI远程控制不显示UI,有时候用起来不太方便,于是想到了用powershell socket。

 

这次在自动化测试中,实际应用了一下powershell socket,效果还不错,跟大家分享一下:)

 

Server端代码:

 

$port = 9876
$separator = ";"


$endpoint = new-object System.Net.IPEndPoint([system.net.ipaddress]::any, $port)
$listener = new-object System.Net.Sockets.TcpListener $endpoint
$listener.start()

$recvbuf = new-object System.Byte[] 1024

$encoding = new-object System.Text.AsciiEncoding

write-host "Listening..." -ForegroundColor Green
$socket = $listener.AcceptTcpClient()
    
while($true)
{
     $stream = $socket.GetStream()
     $command = $null
     if($stream.DataAvailable)
     {
          $read = $stream.Read($recvbuf, 0, $recvbuf.Length)
          if($read -ne $null)
          {
              $commands = $encoding.GetString($recvbuf, 0, $read)
              #write-host ($encoding.GetString($recvbuf, 0, $read))
             
              $cmds = $commands.Split($separator)
              foreach($cmd in $cmds)
              {

                      #...
              }
            }  
          }
     }
}
$socket
$listener.stop()

Start-Sleep -s 10

Exit

 

Client端代码:

 

$ip = "192.168.1.113"
$port = 9876
$separator = ";"

 

$socket = new-object System.Net.Sockets.TcpClient($ip, $port)
if($socket -eq $null)
{
   return;
}

$stream = $socket.GetStream()
$sendBuf = new-object System.Byte[] 1024

$encoding = new-object System.Text.AsciiEncoding

 

$command = “TestData”

$sendBuf = $encoding.GetBytes($command)
$stream.Write($sendBuf, 0, $sendBuf.Length)

 

$stream.Close()
$socket.Close()

Start-Sleep -s 10

Exit

 

www.joy70.com 同学新开的公司,做网络引擎和网络游戏,这里顺便帮忙顶一下

原创粉丝点击