Если вы хотите прямую переадресацию всех вывод в файл, попробуйте использовать *>>
:
# You'll receive standard output for the first command, and an error from the second command.
mkdir c:\temp -force *>> c:\my.log ;
mkdir c:\temp *>> c:\my.log ;
Поскольку это прямой редирект в файл, он не будет выводиться на консоль (часто полезно). Если вы хотите выход консоли, в сочетании все выходные с *&>1
, а затем трубу с Tee-Object
:
mkdir c:\temp -force *>&1 | Tee-Object -Append -FilePath c:\my.log ;
mkdir c:\temp *>&1 | Tee-Object -Append -FilePath c:\my.log ;
# shorter aliased version
mkdir c:\temp *>&1 | tee -Append c:\my.log ;
Я считаю, что эти методы поддерживаются Powershell 3.0+, я тестирую на Powershell 5.0.
Обратите внимание, что запись начала записи не записывает запись стандартного вывода Write-Error, Write-Verbose или Write-Debug .... –
@richard: похоже, сейчас. Возможно, это дополнение 2.0, не уверен, что все эти ответы относятся к 1.0. –
Я использую почти тот же код выше. моя проблема в том, что Stop-Transcript | out-null по-прежнему отправляет сообщение об ошибке, если транскрипция не запущена. Мне нужно подавить сообщение, поскольку оно испортило мой макет. -террористическое молчание не помогает. есть идеи? – Mel