PowerShell 1 не захватывает вывод командного файла с тройником - PullRequest
2 голосов
/ 18 сентября 2009

PowerShell может вызывать командные файлы командной строки. Вывод скрипта PowerShell можно записать с помощью команды «tee». Но команда tee не записывает вывод командных файлов в сценарий PowerShell для меня в PowerShell 1.

Попробуйте этот урезанный пример:

Создать пакетный файл с именем test.bat с содержанием

@echo hello from bat

Запустите его из PowerShell:

PS C:\> .\test.bat | tee out.txt

Это работает - у вас будет выходной файл, содержащий

hello from bat

Теперь создайте сценарий PowerShell с именем test.ps1 , который упаковывает командный файл, содержащий

write-output "hello from PS"
.\test.bat

Теперь запустите это с тройником:

 .\test.ps1 | tee pout.txt

Это не записывает выходные данные пакетных файлов - выходной файл содержит только

hello from PS

В то время как я ожидал

hello from PS
hello from bat

Но пакетный вывод не захватывается. Как я могу получить выходные данные этого скрипта PowerShell и подчиненных пакетных файлов?

1 Ответ

5 голосов
/ 18 сентября 2009

EDIT:

Кажется, что работает в Powershell 2, но не в Powershell 1.

Я нашел обходной путь для Powershell 1. Попробуйте изменить test.ps1 на этот

write-output "hello from PS"
.\test.bat | write-output
...