1

Using Get-Content -AsByteStream, one can read file as a byte stream.

Using 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?

snipsnipsnip
  • 2,268
  • 2
  • 33
  • 34

1 Answers1

2

There is an open closed issue on GitHub for that. The thread is full of a variety of workarounds. (found via this answer)

Edit: There is a PowerShell Module to wrap native commands by @GeeLaw though I haven't tried.

Edit^2: @SeeminglyScience implemented awesome PSNativeCommandPreserveBytePipe experimental feature and it's incorporated as part of v7.4.0-preview.4. It can be enabled with Enable-ExperimentalFeature PSNativeCommandPreserveBytePipe.

snipsnipsnip
  • 2,268
  • 2
  • 33
  • 34