如何在 PowerShell 中通过管道传输二进制数据

use*_*917 5 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"
Run Code Online (Sandbox Code Playgroud)

这个问题在这里得到了很好的描述: PowerShell's Object Pipeline Corrupts Piped Binary Data

你知道解决这个问题的方法吗?

SAT*_*uke 2

您无法在 PowerShell 中通过管道传送二进制数据。要解决此问题,请cmd.exe像这样使用:

$command = "C:\Tools\sleuthkit\bin\mmcat.exe -t dos `"$EWF_IMAGE`" 0 > `"$OUTPUT\Disk-Geometry\MBR.bin`""
cmd /c $command
Run Code Online (Sandbox Code Playgroud)

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

[byte[]]$mbr = Get-Content -Path $OUTPUT\Disk-Geometry\MBR.bin -Encoding Byte
Run Code Online (Sandbox Code Playgroud)