Как хорошо перезагрузить список компьютеров с Windows в домене Windows? Предполагая, что контроллер домена Windows не имеет службы для этого, дайте рекомендации для сценария.
Могу ли я перечислить имена хостов и перебрать имена хостов, чтобы отправить каждому команду перезапуска? Могу ли я получить список имен хостов от DHCP-сервера, работающего в окне Windows 2008, во время выполнения сценария?
Мои предпочтительные языки сценариев от наиболее до наименее желательных: PHP, javascript, Bash, Python (знаю очень мало), VB (знаю, но не люблю)
Если GPO вам не нравится, и вы хотите использовать второй вариант Марка Хендерсона (пакетная shutdown /m
), вы можете упростить свою работу, запрограммировав выключение, чтобы оно выполнялось параллельно, а не последовательно. Для этого требуется PowerShell со стороны административной станции, но это очень изящный.
foreach ($ComputerName in $ComputerList) {
invoke-command -AsJob -ScriptBlock {
params($ComputerName)
shutdown /m $ComputerName /r /f /t 0
} -ArgumentList $ComputerName
}
Этот фрагмент создает как можно больше фоновых заданий выполняются параллельно поскольку есть машины в $ ComputerList. Это может значительно ускорить завершение работы All The Things.
Вы можете сделать это с помощью настроек групповой политики, создав новое запланированное задание, которое будет запускаться каждую ночь в определенное время. Команда для этой задачи должна быть shutdown /r /t 0
. Затем вы можете связать этот GPO с OU или OU, в которых есть ваши компьютеры.
Вероятно, вы захотите использовать параметр «Запускать эту программу через произвольный интервал», установленный где-то между 10-15 минутами. Если вы не будете осторожны, включение питания всех компьютеров в одно и то же время может навредить вашим выключателям. Вы также можете установить флажок, чтобы запускать задачу только в том случае, если компьютер простаивал в течение x часов, на случай, если кто-то тянет всю ночь. Вы же не хотите лишить работы всю ночь, перезагружая кого-то, кто пытается уложиться в срок.
Два варианта:
Создайте запланированную задачу через GPO, которая запускается shutdown /r /f /t 0
или shutdown /g /f /t 0
на каждой машине, которую вы хотите перезагрузить. (проверять, выписываться shutdown /?
для более подробной информации.
Создать пакет, который запускается shutdown /m [computer name] /r /f /t 0
с центрального компьютера (возможно, контроллера домена?). Выполните цикл для каждого компьютера, который хотите перезагрузить (измените [computer name]
). Это означает, что компьютер не будет перезагружен, если он недоступен по какой-либо причине, и его необходимо запускать из учетной записи, которая имеет права на перезагрузку компьютеров.
Вы должны иметь возможность написать командный файл, который просматривает список компьютеров, извлеченных из активного каталога, и запускает команду, однако у меня нет времени написать его сегодня (и я не хочу его тестировать, даже если Я написал это, иначе меня бы разжаловали за перезагрузку любого компьютера в середине дня).
Лучший способ сделать это - уволить человека, который считает, что это необходимо, и делает то, что делают все остальные, а не делает этого.