什么是一个很好的方式来重新启动一个Windows域的Windows电脑列表? 假设Windows域控制器没有这样做的服务,请对脚本进行推荐。
我可以列出主机名并迭代通过主机名向每个主机发送重新启动命令吗? 我可以在脚本运行时从Windows 2008中运行的DHCP服务器上获取主机名列表吗?
我最喜欢的脚本语言从最多到最不可取的是:PHP,JavaScript,Bash,Python(知之甚less),VB(知道但不喜欢)
如果GPO不是你的东西,而且你想和Mark Henderson的第二个选项(批量shutdown /m )一起使用,那么可以通过批量处理shutdown /m来让你的工作更容易,所以它可以并行而不是串行地执行。 它需要PowerShell的pipe理站的一部分,但它非常漂亮 。
foreach ($ComputerName in $ComputerList) { invoke-command -AsJob -ScriptBlock { params($ComputerName) shutdown /m $ComputerName /r /f /t 0 } -ArgumentList $ComputerName }
这个片段的function是产生尽可能多的后台作业,与 $ ComputerList中的机器并行执行 。 这可以使closures所有事情发生很快。
您可以使用组策略首选项执行此操作,方法是创build一个新的计划任务,每天晚上在某个特定时间运行。 该任务的命令应该是shutdown /r /t 0 。 然后,可以将该GPO链接到其中包含计算机的OU或OU。
您可能会想要使用“在随机间隔运行此程序”选项设置10-15分钟之间。 如果你不小心,每台计算机同时启动可能对你的破解者不利。 如果电脑闲置了十几个小时,以防万一有人拉过来,你可能还想检查这个选项,只运行这个任务。 你不想通过重新启动一个试图完成最后期限的人来干掉整晚的工作。
两个选项:
通过GPO创build一个计划任务,在每台要重启的机器上运行shutdown /r /f /t 0或shutdown /g /f /t 0 。 (查看shutdown /?了解更多详情。
创build一个从中央计算机(可能是域控制器?)运行shutdown /m [computer name] /r /f /t 0的批处理。 为每台要重启的计算机循环使用(更改[computer name] )。 这意味着如果计算机无论何种原因无法访问,计算机将不会重新启动,并且需要从具有重新启动计算机权限的帐户运行。
你应该能够编写一个batch file,循环通过从活动目录拉出的计算机列表并运行命令,但是我没有时间写一个今天(即使我不愿意testing它我确实写了,否则我会在一天当中被重新启动每一台电脑)。
要做到这一点,最好的办法就是解雇那个有这个需要的人,做所有其他人做的事 – 不这样做。