每晚重新启动 Windows 域中所有计算机的好方法

每晚重新启动 Windows 域中所有计算机的好方法

重新启动 Windows 域中的 Windows 计算机列表的好方法是什么?假设 Windows 域控制器没有执行此操作的服务,请为脚本提出建议。

我可以列出主机名并遍历主机名以向每个主机发送重新启动命令吗?我可以在脚本运行时从 Windows 2008 框中运行的 DHCP 服务器获取主机名列表吗?

我最喜欢到最不喜欢的脚本语言依次为:PHP、javascript、Bash、Python(了解得很少)、VB(了解但不喜欢)

答案1

如果您不喜欢 GPO,而想使用 Mark Henderson 的第二个选项(批处理shutdown /m),您可以通过批量处理关机来简化您的工作,这样它将并行而不是串行执行。它需要管理员站的 PowerShell,但它非常漂亮

foreach ($ComputerName in $ComputerList) {
    invoke-command -AsJob -ScriptBlock {
        params($ComputerName)
        shutdown /m $ComputerName /r /f /t 0
    } -ArgumentList $ComputerName
}

这个片段的作用是生成尽可能多的后台作业并行执行因为 $ComputerList 中有机器。这可以使关闭所有事物的速度更快。

答案2

您可以使用组策略首选项执行此操作,方法是创建一个新的计划任务,该任务将在每晚的特定时间运行。该任务的命令应该是shutdown /r /t 0。然后,您可以将该 GPO 链接到包含您的计算机的 OU 或 OU。

您可能希望使用“以随机间隔运行此程序”选项,将其设置为 10-15 分钟之间。如果不小心,让每台计算机同时启动可能会对您的断路器造成不利影响。您可能还想选中仅在计算机闲置 x 小时后运行任务的选项,以防有人通宵工作。您不想通过重新启动试图赶上最后期限的人来毁掉一整晚的工作成果。

答案3

两个选项:

  1. shutdown /r /f /t 0通过 GPO 创建在shutdown /g /f /t 0要重新启动的每台机器上运行的计划任务。(查看shutdown /?更多详细信息。)

  2. shutdown /m [computer name] /r /f /t 0创建从中央计算机(可能是域控制器?)运行的批处理。对要重新启动的每台计算机循环执行该批处理(更改[computer name])。这意味着如果计算机因任何原因无法访问,则不会重新启动计算机,并且需要从具有重新启动计算机权限的帐户运行该批处理。

您应该能够编写一个批处理文件,循环遍历从活动目录中提取的计算机列表并运行命令,但是我今天没有时间编写一个批处理文件(即使我写了它,我也不愿意测试它,否则我会因为在中午重新启动每个人的计算机而受到严厉批评)。

答案4

最好的办法就是解雇认为这是必要的人,并和其他人一样不做这件事。

相关内容