В cmd (и bash) канал "|
" передает вывод другой команде в исходном формате вывода первой команды (в виде строки).
В PowerShell все, что выходит из каналаявляется объектом (даже строка является строковым объектом).
Из-за этого некоторые команды не выполняются при запуске в командном окне PowerShell, а не в командном окне Windows.
Пример:
dir c:\windows | gzip > test.gz
Когда эта команда запускается в окне командной строки Windows, она работает правильно - список каталогов C: \ windows сжимается в файл test.gz.
Сбой той же команды в PowerShellпотому что PowerShell не использует канал стиля cmd и заменяет его каналом PowerShell (работа с массивом элементов файловой системы).
Q. Как отключить поведение конвейера по умолчанию в PowerShellзаставить традиционные команды Windows работать одинаково в PowerShell?
Я пытался использовать escape-символ "`
" перед каналом "`|
", но он не работал,Я тоже попробовал invoke-expression -command "command with | here"
, но тоже не получилось.