O shutdown.exe pode ser feito para mostrar sucesso?

0

Eu uso shutdown.exe para reiniciar um monte de computadores remotamente. Se falhar, mostro o erro fazendo um redirecionamento 2 > 1 para um arquivo de log. No entanto, eu gostaria de mostrar sucessos também, mas o shutdown.exe não faz isso. Não mostra nada se for bem sucedido. Existe alguma maneira de fazer isso?

    
por prl77 06.06.2017 / 17:48

1 resposta

1

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 ...

    
por 08.06.2017 / 20:56

Tags