У меня есть сценарий PowerShell, для которого я хотел бы перенаправить вывод в файл. Проблема в том, что я не могу изменить способ вызова этого скрипта. Поэтому я не могу сделать:
.\MyScript.ps1 > output.txt
Как перенаправить вывод скрипта PowerShell во время его выполнения?
powershell
scripting
stdout
Мартин
источник
источник
Microsoft объявила на веб-сайте Powershell Connections (2012-02-15 в 16:40), что в версии 3.0 они расширили перенаправление в качестве решения этой проблемы.
Обратитесь к справочной статье about_Redirection за подробностями и примерами.
источник
Использование:
источник
Я так понимаю, вы можете изменить
MyScript.ps1
. Затем попробуйте изменить это так:Я только что попробовал это с PowerShell 3. Вы можете использовать все параметры перенаправления, как в ответе Натана Хартли .
источник
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
но Powershell действительно безобразен, если вам нужно точно контролировать вывод.Одно из возможных решений, если ваша ситуация позволяет это:
Создайте новый MyScript.ps1, который выглядит следующим образом:
. \ TheRealMyScript.ps1> output.txt
источник
источник
Возможно, вы захотите взглянуть на командлет Tee-Object . Вы можете передать вывод в Tee, и он будет записывать в конвейер, а также в файл
источник
Если вы хотите прямое перенаправление всего вывода в файл, попробуйте использовать
*>>
:Поскольку это прямое перенаправление в файл, оно не будет выводиться на консоль (часто полезно). Если вы хотите получить консольный вывод, объедините весь вывод с
*&>1
, а затем передайте сTee-Object
:Я считаю, что эти методы поддерживаются в PowerShell 3.0 или более поздней версии; Я тестирую на PowerShell 5.0.
источник
Если вы хотите сделать это из командной строки, а не встроить в сам скрипт, используйте:
источник
Чтобы встроить это в ваш скрипт, вы можете сделать это так:
Это должно делать свое дело.
источник