我想将命令的输出通过管道传输到文件:
PS C:\Temp> create-png > binary.png
我注意到 Powershell 更改了编码,并且我可以手动给出编码:
PS C:\Temp> create-png | Out-File "binary.png" -Encoding OEM
但是没有 RAW 编码选项,即使 OEM 选项也会更改换行字节(0xA
resp 0xD
) 到 windows 换行符字节序列 (0xD 0xA
)从而破坏任何二进制格式。
如何防止 Powershell 在管道传输到文件时更改编码?
相关问题
- PowerShellscript,错误的文件编码对话
- 在 PowerShell 中将输出写入文本文件
- 使用 PowerShell 以 UTF-8 写入无 BOM 的文件
尝试使用设置内容:
create-png | set-content -path myfile.png -encoding byte
如果您需要有关设置内容的更多信息,只需运行
get-help set-content
您还可以使用“sc”作为设置内容的快捷方式。
使用以下内容进行测试,生成可读的 PNG:
function create-png()
{
[System.Drawing.Bitmap] $bitmap = new-object 'System.Drawing.Bitmap'([Int32]32,[Int32]32);
$graphics = [System.Drawing.Graphics]::FromImage($bitmap);
$graphics.DrawString("TEST",[System.Drawing.SystemFonts]::DefaultFont,[System.Drawing.SystemBrushes]::ActiveCaption,0,0);
$converter = new-object 'System.Drawing.ImageConverter';
return([byte[]]($converter.ConvertTo($bitmap, [byte[]])));
}
create-png | set-content -Path 'fromsc.png' -Encoding Byte
如果您正在调用 ipconfig 等非 PowerShell 可执行文件,并且只想从标准输出捕获字节,请尝试 Start-Process:
Start-Process -NoNewWindow -FilePath 'ipconfig' -RedirectStandardOutput 'output.dat'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)