O que eu faço é timestamp / echo o nome do computador para um arquivo de log, bem como o redirecionamento que você mencionou na sua pergunta. Se nada acontecer, só vejo o timestamp / nome no log. Se ocorrer um erro, vejo o timestamp / name e o erro abaixo dele. Por exemplo, aqui está um trecho de um log gerado (nomes ofuscados em nomes de computadores genéricos):
-- START BATCH - Wed 04/12/2017 - 0:15:25.88 --
COMPUTER1 - Wed 04/12/2017 - 0:15:26.90
COMPUTER2 - Wed 04/12/2017 - 0:15:29.53
COMPUTER3 - Wed 04/12/2017 - 0:15:32.20
COMPUTER3: The entered computer name is not valid or remote shutdown is not supported on the target computer. Check the name and then try again or contact your system administrator.(53)
COMPUTER4 - Wed 04/12/2017 - 0:15:36.59
(etc)...
-- END BATCH - Thu 04/13/2017 - 0:20:21.04 --
Como você pode ver, o COMPUTER3 teve um erro, que foi direcionado de STDERR para STDOUT. Tudo o mais aceitou o comando sem problemas.
Aqui está o arquivo de lote real que direciona tudo isso, que lê nomes de computador de um arquivo de texto chamado COMPUTERS.txt e copia para um log chamado LOG_COMPUTERS.txt. Eu corri como uma tarefa agendada com direitos elevados, mas você pode executá-lo sob demanda / por conta própria sem problema. Qualquer que seja a conta que execute o arquivo de lote, você precisará de direitos administrativos no PC remoto.
@echo off
setlocal enabledelayedexpansion
echo. >> LOG_COMPUTERS.txt
echo -- START BATCH - !date! - !time! -- >> LOG_COMPUTERS.txt
for /f %%i in (COMPUTERS.txt) do (
echo %%i - !date! - !time! >> LOG_COMPUTERS.txt
shutdown.exe /s /f /m \%%i /t 300 /c "This PC will shut down in 5 minutes. Please save all of your work." >> LOG_COMPUTERS.txt 2>&1
echo. >> LOG_COMPUTERS.txt
)
echo. >> LOG_COMPUTERS.txt
echo -- END BATCH - !date! - !time! -- >> LOG_COMPUTERS.txt
É bruto, mas funcionou muito bem por um longo tempo ...