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 同学新开的公司,做网络引擎和网络游戏,这里顺便帮忙顶一下