PowerShell 管道会自动加换行符

字符编码

数据经过管道 | 这么一传,就多了 \r\n 字符(在 Windows,平台相关)

PowerShell
$ (Write-Output "").Length
0
 
$ Write-Output "" | hexyl.exe --border none
 00000000  0d 0a
 
$ @"
> uname
> uname
> "@ | wsl
Linux
-bash: 行 2: $'uname\r': 未找到命令

好在只是出现在 PowerShell 中,我可以用 Announcing Built-in Core Utilities for Windows | Task TaskFile 绕过这个限制。

2026-07-06 在 Taskfile 中调用 PowerShell 也会在返回值添加 CRLF \r\n,属实是没招了。

tasks:
  default:
    cmds:
      # output: 0d 0a
      - pwsh -NoProfile -Command "Write-Output ''" | hexyl
      # output: none
      - echo -n '' | hexyl

有编码、换行符、路径分隔符、参数处理方式这些难以挪动的屎山,我绝对不推荐在任何情况使用 PowerShell