如何在PowerShell中管道二进制数据

时间:2019-01-08 06:39:19

标签: powershell

我尝试通过PowerShell和PowerShell ISE(版本5.1.1)中的mmcat.exe提取主引导记录(MBR)。输出的二进制数据始终大于512字节。 PowerShell 6.1.1仍然存在此问题。

$mmcat = "C:\Tools\sleuthkit\bin\mmcat.exe"
& $mmcat -t dos "$EWF_IMAGE" 0 > "$OUTPUT\Disk-Geometry\MBR.bin"

问题在这里描述得很清楚: PowerShell’s Object Pipeline Corrupts Piped Binary Data

您知道解决方法吗?

1 个答案:

答案 0 :(得分:1)

您无法在PowerShell中通过管道传输二进制数据。要变通,请像这样使用cmd.exe

$command = "C:\Tools\sleuthkit\bin\mmcat.exe -t dos `"$EWF_IMAGE`" 0 > `"$OUTPUT\Disk-Geometry\MBR.bin`""
cmd /c $command

您可以像这样读取二进制数据:

[byte[]]$mbr = Get-Content -Path $OUTPUT\Disk-Geometry\MBR.bin -Encoding Byte