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