在cmd(和bash)中,管道" |"以第一个命令输出的原始格式(作为字符串)将输出推送到另一个命令.
在PowerShell中,管道中出现的所有内容都是一个对象(即使字符串是一个字符串对象).
因此,在PowerShell命令窗口中运行时,某些命令会失败,而不是Windows命令窗口.
例:
dir c:\windows | gzip > test.gz
Run Code Online (Sandbox Code Playgroud)
在Windows命令提示符窗口中运行此命令时,它可以正常工作 - C:\ windows的目录列表被压缩到test.gz文件中.
PowerShell中的相同命令失败,因为PowerShell不使用cmd样式的管道并将其替换为PowerShell管道(使用文件系统项目数组).
问:如何在PowerShell中禁用默认管道行为,以使传统Windows命令在PowerShell中的工作方式相同?
我尝试`在管道" `|" 之前使用转义字符" ",但它没有用.我也尝试过invoke-expression -command "command with | here",但也失败了.