重新启动Windows域中的Windows计算机列表的好方法是什么?假设Windows域控制器没有执行此操作的服务,请对脚本进行建议。
我可以列出主机名并遍历主机名以向每个主机名发送重新启动命令吗?我可以从脚本运行时在Windows 2008框中运行的DHCP服务器获取主机名列表吗?
我最喜欢的脚本语言(从最不喜欢的语言)是:PHP,javascript,Bash,Python(了解很少),VB(了解但不喜欢)
重新启动Windows域中的Windows计算机列表的好方法是什么?假设Windows域控制器没有执行此操作的服务,请对脚本进行建议。
我可以列出主机名并遍历主机名以向每个主机名发送重新启动命令吗?我可以从脚本运行时在Windows 2008框中运行的DHCP服务器获取主机名列表吗?
我最喜欢的脚本语言(从最不喜欢的语言)是:PHP,javascript,Bash,Python(了解很少),VB(了解但不喜欢)
Answers:
如果不是您要使用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中的机器一样多的并行执行的后台作业。这可以使所有事物的关闭速度更快。
-AsJob
是这里的魔力。
您可以使用组策略首选项来执行此操作,方法是制作一个新的计划任务,该任务将在特定时间每晚运行。该任务的命令应为shutdown /r /t 0
。然后,您可以将该GPO链接到其中装有您的计算机的一个或多个OU。
您可能需要使用“以随机间隔运行此程序”选项,该选项设置为10至15分钟。如果不小心的话,同时打开每台计算机的电源可能对断路器不利。您可能还希望选中仅在计算机闲置了x个小时后才运行任务的选项,以防有人拉通宵夜。您不希望通过重新启动尝试设定截止日期的人员来浪费一整夜的工作。
两种选择:
通过运行shutdown /r /f /t 0
或shutdown /g /f /t 0
在要重新引导的每台计算机上的GPO创建计划任务。(查看shutdown /?
更多详细信息。
创建一个shutdown /m [computer name] /r /f /t 0
从中央计算机(也许是域控制器?)运行的批处理。为要重新启动的每台计算机循环播放(更改[computer name]
)。这意味着如果由于某种原因无法访问计算机,将不会重新启动计算机,而需要从有权重新启动计算机的帐户中运行该计算机。
您应该能够编写一个批处理文件,该批处理文件循环遍历从活动目录中拉出的计算机列表并运行该命令,但是我今天没有时间写一个文件(即使在测试过程中,我也不愿意进行测试)我确实写过它,否则我会因为每天中途重新启动每个人的计算机而烦恼)。
start cmd /c shutdown /m computer /r /f /t 0
)生成单独的进程,或者使用某种逻辑来检查是否在线,否则离线计算机的延迟可能会很大。
做到这一点的最好方法是开除一个人,认为这个想法是必须的,并做所有其他人都做的事情-不这样做。