Назад | Перейти на главную страницу

Хороший способ перезагружать все компьютеры в домене Windows каждую ночь

Как хорошо перезагрузить список компьютеров с 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 часов, на случай, если кто-то тянет всю ночь. Вы же не хотите лишить работы всю ночь, перезагружая кого-то, кто пытается уложиться в срок.

Два варианта:

  1. Создайте запланированную задачу через GPO, которая запускается shutdown /r /f /t 0 или shutdown /g /f /t 0 на каждой машине, которую вы хотите перезагрузить. (проверять, выписываться shutdown /? для более подробной информации.

  2. Создать пакет, который запускается shutdown /m [computer name] /r /f /t 0 с центрального компьютера (возможно, контроллера домена?). Выполните цикл для каждого компьютера, который хотите перезагрузить (измените [computer name]). Это означает, что компьютер не будет перезагружен, если он недоступен по какой-либо причине, и его необходимо запускать из учетной записи, которая имеет права на перезагрузку компьютеров.

Вы должны иметь возможность написать командный файл, который просматривает список компьютеров, извлеченных из активного каталога, и запускает команду, однако у меня нет времени написать его сегодня (и я не хочу его тестировать, даже если Я написал это, иначе меня бы разжаловали за перезагрузку любого компьютера в середине дня).

Лучший способ сделать это - уволить человека, который считает, что это необходимо, и делает то, что делают все остальные, а не делает этого.