我有一台主计算机,它知道什么时候停电。然后,该主计算机将使用内置的“/m \ computer main /s”命令告诉所有工作站通过网络关机。这台主计算机还将告诉各个工作站使用相同的shutdown /m \\computername /r机制重新启动。
每个工作站都有一个脚本,在执行时保存所有重要数据。
每个工作站在被告知通过网络(shutdown /m \\computername /s或shutdown /m \\computername /r)关闭或重新启动时必须执行其脚本。
Idea1:
Idea2:
Problem:shutdown.exe实际上并没有被执行。即使您在本地运行一个简单的shutdown -s -t 30,也不会。
Idea3:
Problem:我不知道使用的是什么协议,以及数据包是如何格式化的。
Idea4:
Problem:我不知道这是否会在哪里被记录。
PS:
我不想使用PsExec。工作站必须自己执行脚本。
发布于 2017-03-15 20:14:19
当您只需要设置Windows关闭脚本时,为什么要更加努力呢?
很简单:
执行gpedit.msc (本地策略),然后转到: Windows设置、->脚本、->关机、->属性、->添加,在这里添加脚本。它将始终执行关机。如果您只想在从服务器端调用关机时才运行它,最好创建非常简单的c# (或其他)程序来运行脚本,然后关闭计算机。在您拥有这个之后,您可以从服务器调用它。

警告:组策略启动和关闭不会执行,当使用快速引导时(默认情况下在windows 8和更高版本中启用)。在这种情况下,只有重启或强制关闭(从命令提示符)关闭真正的计算机。在所有其他情况下(启动菜单关闭),计算机内核休眠,并在启动时重新启动,而GPO启动和关机启动则被忽略。
更多的here。
编辑:
当您有关机脚本并且不想创建某个程序时,您可以签入关机脚本如果是某个文件,您创建的是什么存在,如果没有,那么备份,如果是,继续正常关闭和删除该文件。当您创建另一个脚本并将其放置在桌面或任何地方,并将其编程到创建文件并运行shutdown.exe时,您将在没有备份的情况下正常关闭,但是如果服务器调用关机,它将进行备份。
发布于 2017-03-21 07:15:53
您可以在每个工作站(例如c#.net )中的始终运行的应用程序中检测Windows关机,在关闭之前,运行脚本,然后继续关闭。将事件处理程序方法附加到SystemEvents.SessionEnded事件。看看here
https://stackoverflow.com/questions/42705682
复制相似问题