Get-Content -AsByteStream, one can read file as a byte stream.
Set-Content -AsByteStream, one can create a file from a byte stream.
However, I haven't found a way to pass these byte streams to other non-PowerShell commands. Pipes between external commands always decode the data as a string, which mangle binaries.
cmd /c --% or
Start-Process -RedirectStandardInput do solve part of the problem, but it can get a bit tedious if any of involved commands is another cmdlet. Is there a PowerShell-native way to handle executable input/output as a stream of byte?
Edit^2(2023-06-29): @SeeminglyScience implemented awesome
PSNativeCommandPreserveBytePipe experimental feature and it's incorporated as part of v7.4.0-preview.4. It can be enabled with
Edit^3(2023-11-16): PowerShell 7.4 has been released. The feature has become built-in, so
cmd /c type a.zip > b.zip should work by default now.