Подробный вывод текстового журнала в .txt - PullRequest
0 голосов
/ 15 мая 2019

Я знаю, что это просто для большинства из вас, но я не могу понять, как этого добиться.

cd c:\
$item = '123'
Rename-Item $item -NewName '2019' -Verbose
Write-Verbose "Success" -Verbose >> c:\temp\test.txt

Когда я открываю test.txt, он пуст. Как бы вы записали подробное сообщение, которое вы видите здесь, в .txt?

enter image description here

1 Ответ

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

По умолчанию (>) выводит поток успеха (1).Вы можете получить доступ к определенному потоку, добавив соответствующий номер потока к >.Вы также можете перенаправить определенный поток в поток успеха с помощью синтаксиса (n>&1 > file.txt), где n - номер потока.Несколько потоков могут быть перенаправлены одновременно, как ошибки и подробности (6>&1 4>&1 > file.txt).Для всех потоков можно использовать подстановочный знак вместо n (*>).

Альтернативный подход состоит в том, чтобы просто использовать блоки try-catch-finally для перехвата ошибок и затем выполнять действия, основанные на условиях ошибки.

Вот базовый пример подробного перенаправления потока (4>>) и всех потоков (*>>) с проверкой ошибок.$? возвращает true, если ранее выполненная команда была успешной.

Пример 1: Rename-Item имеет ошибку.

rename-item verb1.txt verb2.txt -verbose *>> verbose.txt
if ($?) { 
   write-verbose "Rename-Item Was Successful" -Verbose 4>> verbose.txt }
else { 
   Write-Verbose "Rename-Item Failed" -Verbose 4>> verbose.txt }
Get-Content verbose.txt

rename-item: Невозможно переименовать, так как элемент в verb1.txt не имеетсуществовать.В строке: 1 символ: 1 + переименовать элемент verb1.txt verb2.txt -verbose * >> verbose.txt + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [Rename-Item], PSInvalidOperationException + FullyQualifiedErrorId:InvalidOperation, Microsoft.PowerShell.Commands.RenameItemCommand

Не удалось переименовать элемент

Пример 2: Rename-Item не содержит ошибок.

rename-item verb2.txt verb1.txt -verbose *>> verbose.txt
if ($?) { 
   write-verbose "Rename-Item Was Successful" -Verbose 4>> verbose.txt }
else { 
   Write-Verbose "Rename-Item Failed" -Verbose 4>> verbose.txt }

Get-Content verbose.txt

Выполнение операции «Переименовать файл» на целевом объекте: Item: verb2.txt Место назначения: verb1.txt ".
Переименовать-элемент прошел успешно

См. About_Redirection для более подробной информации.

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