可以让shutdown.exe显示成功吗?

可以让shutdown.exe显示成功吗?

我使用shutdown.exe远程重启一组计算机。如果失败,我会通过执行 2>&1 重定向到日志文件来显示错误。但是,我也希望显示成功,但shutdown.exe 不会这样做。如果成功,它什么也不会显示。有什么办法可以让它这样做吗?

答案1

我所做的是将计算机名称加盖时间戳/回显到日志文件以及您在问题中提到的重定向。如果什么都没发生,我只会在日志中看到时间戳/名称。如果出错,我会看到时间戳/名称及其下方的错误。例如,以下是生成的日志的摘录(名称被混淆为通用计算机名称):

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

如您所见,COMPUTER3 出现错误,该错误从 STDERR 发送到 STDOUT。其他所有设备均无问题地接受了该命令。

这是驱动所有这些的实际批处理文件,它从名为 COMPUTERS.txt 的文本文件中读取计算机名称并将其转储到名为 LOG_COMPUTERS.txt 的日志中。我将其作为具有提升权限的计划任务运行,但您可以按需/自行运行它而不会出现问题。无论哪个帐户运行批处理文件,都需要远程 PC 上的管理权限。

@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

虽然很粗糙,但长期以来效果很好……

相关内容