Powershell:TCP侦听器疑难解答

Powershell:TCP侦听器疑难解答,powershell,Powershell,我制作了一个关于同一进程的Python脚本,但我不得不将其转换为PowerShell,我遇到了一些问题。首先,之所以使用端口443,是因为它是唯一打开的端口,我想在将来做一些SSL。我还为Linux服务器制作了一个Ruby侦听器,它与客户端Powershell完美配合,但我不得不切换到Windows服务器,Powershell是唯一可用的选项。脚本要大得多,但我只在接收数据时遇到问题 客户端脚本 $test=[System.Convert]::ToBase64String([io.file]::

我制作了一个关于同一进程的Python脚本,但我不得不将其转换为PowerShell,我遇到了一些问题。首先,之所以使用端口443,是因为它是唯一打开的端口,我想在将来做一些SSL。我还为Linux服务器制作了一个Ruby侦听器,它与客户端Powershell完美配合,但我不得不切换到Windows服务器,Powershell是唯一可用的选项。脚本要大得多,但我只在接收数据时遇到问题

客户端脚本

$test=[System.Convert]::ToBase64String([io.file]::ReadAllBytes("C:\path\to\file.csv"))
$test2=[System.Convert]::ToBase64String([io.file]::ReadAllBytes($env:computername));

$socket = New-Object net.sockets.tcpclient('XxX.XxX.XxX.XxX',443)

$stream = $socket.GetStream()
$writer = new-object System.IO.StreamWriter($stream)
$buffer = new-object System.Byte[] 1024

$writer.WriteLine($env:computername)
$socket.close()
服务器侦听器

$LOCALHOST  = [Net.DNS]::GetHostEntry([Net.DNS]::GetHostName()).AddressList[0]
$PORT = "443"

$ENDPOINT = New-Object System.Net.IPEndPoint($LOCALHOST,$PORT) 
$TCPlistener = New-Object  System.Net.Sockets.TcpListener $ENDPOINT
$TCPlistener.start() 

$DATA = $TCPlistener.AcceptTcpClient() 

$Stream = $DATA.GetStream() 
$Reader = new-object System.IO.StreamReader($Stream)
$Buffer = New-Object System.Byte[] 1024

while (($Element = $Stream.Read($Buffer,0,$Buffer.Length)) -ne 0) {

    $EncodedText = New-Object System.Text.ASCIIEncoding
    $DATA = $EncodedText.GetString($Buffer,0, $Element)
    $sDecodedString=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($DATA))
    Write-Output $sDecodedString

}

# Closing stuff
$Reader.Close()
$Stream.Close()
$TCPlistener.Stop()

由于某些原因,我无法读取服务器中的$test2变量。另外,如果我发送$test,其中包含CSV文件的路径,它几乎可以完美工作。我做错了什么?

当前文件夹中是否确实有名为$env:computername的文件?需要文件的路径才能从中读取所有字节。我怀疑您可能想要
$test2=[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Env:COMPUTERNAME))
@leeharvey1很抱歉回答得太晚。我试过使用您发送的命令,但结果是一样的。我无法在服务器中获得任何输出