Переслать консольный вывод файла npm / js на консоль powershell - PullRequest
0 голосов
/ 24 мая 2019

В моем скрипте powershell я делаю следующее:

Write-Host (npm run onesky_script -- "param1" "param2" "param3") -Separator `n
// OR following
npm run onesky_script -- "param1" "param2" "param3" | Write-Host

И в обоих случаях я получаю следующий вывод в консоли PowerShell:

> onesky@1.0.0 onesky_script C:\some\path
> node onesky.js "param1" "param2" "param3"

Some console output created by my js script via console.log

Я хочу получить следующий вывод (ТОЛЬКОвывод js-скрипта, а НЕ вызовы скрипта):

Some console output created by my js script via console.log

Существуют ли какие-либо изменения синтаксиса вызова или альтернативного синтаксиса, которые я могу использовать для достижения того, чего я хочу достичь?

1 Ответ

0 голосов
/ 24 мая 2019

Не используйте Write-Host, если вы пытаетесь использовать данные, которые хотите отправить другому элементу. Write-Host очищает буфер и не подходит для конвейера, если вы ниже PowerShellv5x. В версии 5 он теперь записывает в информационный поток. Это было задокументировано Microsoft уже некоторое время.

http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful

... Джеффри Сновер меняет свою позицию по этому вопросу с мая 2016 года.

С PowerShell v5 Write-Host больше не "убивает щенков". данные захватывается в информационный поток ...

https://twitter.com/jsnover/status/727902887183966208 ... https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Write-Information?view=powershell-5.1

Обратите внимание на использование определенных выходных перенаправлений.

О перенаправлении

Примеры

# Example 1: Redirect errors and output to a file
dir 'C:\', 'fakepath' 2>&1 > .\dir.log

Этот пример запускает dir для одного элемента, который будет успешным, и для одного, который будет ошибка. Он использует 2> & 1 для перенаправления потока ошибок в поток Success и> для отправки результирующего потока Success в файл с именем dir.log

# Example 2: Send all Success stream data to a file
.\script.ps1 > script.log

Эта команда отправляет все данные потока успеха в файл с именем script.log

# Example 3: Send Success, Warning, and Error streams to a file


&{
   Write-Warning "hello"
   Write-Error "hello"
   Write-Output "hi"
} 3>&1 2>&1 > P:\Temp\redirection.log

В этом примере показано, как можно объединить операторы перенаправления для достичь желаемого результата.

• 3> & 1 перенаправляет поток предупреждений в поток Success.

• 2> & 1 перенаправляет поток ошибок в поток успеха (который также теперь включает все данные потока предупреждений)

•> перенаправляет поток успеха (который теперь содержит как предупреждение, так и Потоки ошибок) в файл с именем C: \ temp \ redirection.log)

# Example 4: Redirect all streams to a file
.\script.ps1 *> script.log

В приведенной ссылке есть другие определения / опции вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...