Я создаю скрипт для перезагрузки компьютеров, и мне нужно сообщать об успешном или неудачном выполнении команды shutdown.exe как часть журнала моего скрипта. У меня возникла проблема с перенаправлением вывода неудачных процессов shutdown.exe в файл. Вот моя командная строка:
shutdown.exe -r -t 50000 -m \\top34.top.local > c:\output.txt
При запуске я вижу на экране следующее сообщение: "top34.top.local: Введенное имя компьютера недопустимо или удаленное выключение не поддерживается на целевом компьютере. Проверьте имя и повторите попытку или обратитесь к системному администратору.(53)", что я и ожидал, но c:\output.txt пуст и не содержит этой ошибки. Мой скрипт должен вывести эту строку в текстовый файл для целей ведения журнала.
Я также попытался обернуть его вокруг CMD, вот так:
cmd /c shutdown.exe -r -t 50000 -m \\top34.top.local > c:\output.txt
Но и это не дает результата. Я также пробовал двойной >> (append), но это ничего не меняет.
Я провел довольно много расследований, и, похоже, shutdown.exe перенаправляет вывод успешных команд в stdout, но не неудачных команд. Как мне заставить его перенаправлять как успешные, так и неудачные команды в мой файл?
Работает на Windows 2012 R2
решение1
Как мне заставить его ( shutdown
) перенаправлять как успешные, так и неудачные команды в мой файл?
Используйте следующую команду:
shutdown.exe -r -t 50000 -m \\top34.top.local > c:\output.txt 2>&1
Обратите внимание, что 2>&1
должно бытьпослепервое >
перенаправление.
Дублирование ручек
Оператор
&
перенаправления дублирует вывод или ввод из одного указанного дескриптора в другой указанный дескриптор. Например, чтобы отправитьdir
вывод в File.txt и отправить вывод ошибок вFile.txt
, введите:dir > c:\file.txt 2>&1