如何使用Powershell打开二进制管道

如何使用Powershell打开二进制管道,powershell,Powershell,据我所知,Powershell无法重定向输入流。相反,必须使用Get Content将结果传输到目标程序。但这似乎创建了文本流 我尝试通过管道将二进制数据传输到plink: Get-Content client.zip | & 'C:\Program Files (x86)\PuTTY\plink.exe' unix nop 目标系统“unix”是一个Debian,在authorized\u key文件中有一个固定命令 这是我尝试传输的文件的第一个字节: 00000000 50 4b

据我所知,Powershell无法重定向输入流。相反,必须使用
Get Content
将结果传输到目标程序。但这似乎创建了文本流

我尝试通过管道将二进制数据传输到plink:

Get-Content client.zip | & 'C:\Program Files (x86)\PuTTY\plink.exe' unix nop
目标系统“unix”是一个Debian,在
authorized\u key
文件中有一个固定命令

这是我尝试传输的文件的第一个字节:

00000000  50 4b 03 04 0a 00 00 00  00 00 6f 4a 59 50 c8 cb  |PK........oJYP..|
这就是到达目标系统的原因:

00000000  50 4b 03 04 0d 0a 00 00  00 00 00 6f 4a 59 50 3f  |PK.........oJYP?|
“0a”将替换为“0d 0a”。我不确定,但我想
Get Content
就是这样做的

如何使用Powershell传输二进制数据


我已经安装了Powershell 6。我已经尝试了这些选项——AsByteStream-ReadCount-Raw,我得到了可能不同的有趣结果。但是没有任何东西能给我提供zip文件的精确副本。“停止对我的文件做任何事情”的选项在哪里?我想我自己找到了。这似乎是我想要的:

Start-Process 'C:\Program Files (x86)\PuTTY\plink.exe' -ArgumentList "unix nop" -RedirectStandardInput .\client.zip -NoNewWindow -Wait
尝试一下:

# read binary
$bytes = [System.IO.File]::ReadAllBytes('client.zip')

# pipe all Bytes to external prg
$bytes | & 'C:\Program Files (x86)\PuTTY\plink.exe' unix nop

您是否尝试过
获取Content-Path client.zip-Encoding Byte
?这将生成一个文本文件,每行包含zip文件每个字节的十进制值。这是我在问题中提到的有趣结果之一。