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

9

Что такое хороший способ перезагрузить список компьютеров Windows в домене Windows? Предполагая, что контроллер домена Windows не имеет службы для этого, пожалуйста, сделайте рекомендации для сценария.

Могу ли я перечислить имена хостов и выполнить итерации по именам хостов, чтобы отправить команду перезапуска каждому? Могу ли я получить список имен хостов с сервера DHCP, работающего в окне Windows 2008 во время выполнения скрипта?

Мои предпочтительные языки сценариев от наиболее до наименее желательных: PHP, javascript, Bash, Python (очень мало знаю), VB (знаю, но не нравится)

на паровой тяге
источник
8
переверните выключатель. Я ребенком.
gravyface
это приведет к отключению, мне нужна перезагрузка.
steampowered
@JM - нет, если в BIOS установлено «Возобновить предыдущее состояние питания».
Поддельное имя
@ Поддельное имя - это звучит как большая работа
steampowered

Ответы:

15

Если 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 намного быстрее.

sysadmin1138
источник
2
Это интересное решение - если у вас много компьютеров для перезагрузки, я очень рекомендую это решение, так как оно будет запускать команды выключения параллельно.
Ричард Вест
2
Это -AsJobволшебный бит здесь.
Jscott
Мне любопытно, почему вы используете команду shutdown, а не командлет Restart-Computer.
Чарльз Бердж
@CharlesBurge На это ответили 5 лет назад, и PS3 не получил широкого распространения. Также это демонстрирует технику запуска команд в других системах. В 2017 году мы просто делали все это в PowerShell и не беспокоились о командах. Времена меняются.
sysadmin1138
7

Это можно сделать с помощью параметров групповой политики, создав новую запланированную задачу, которая будет выполняться каждую ночь в определенное время. Команда для этой задачи должна быть shutdown /r /t 0. Затем вы можете связать этот объект групповой политики с подразделениями или подразделениями, в которых есть ваши компьютеры.

Возможно, вы захотите использовать опцию «Запускать эту программу с произвольным интервалом», установленную где-то между 10-15 минутами. Если каждый компьютер включается одновременно, это может быть вредно для ваших выключателей, если вы не будете осторожны. Вы также можете выбрать вариант запуска задачи только в том случае, если компьютер простаивал в течение x часов, если кто-то тянет всю ночь. Вы не хотите убивать труд на целую ночь, перезагружая кого-то, кто пытается сделать крайний срок.

MDMarra
источник
Я не знаком с настройкой запланированных задач с помощью объекта групповой политики, поэтому мне интересно: если машина будет перемещена из одного подразделения в другое без заданной задачи, исчезнет ли заданная задача или она останется после первого применения?
Макубан
6

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

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

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

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

Марк Хендерсон
источник
Кроме того, есть команда psshutdown, которая также может запускаться через командный файл, входящий в комплект sysinternals ...
Барт Сильверстрим,
Я использовал и 1, и 2. Теперь развлекаюсь с Powershell. При использовании # 2, рассмотрите основной сценарий, порождающий отдельный процесс для каждого компьютера (например start cmd /c shutdown /m computer /r /f /t 0) или используя некоторую логику, чтобы проверить, подключен ли он к сети, иначе задержка для отключенных компьютеров может быть значительной.
Jscott
4

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

TomTom
источник
Перенаправление папок, по-видимому, связывает ресурсы, когда люди остаются в системе в течение ночи. Я полагаю, я мог бы попытаться установить массовый выход из системы вместо массовой перезагрузки, но перезагрузка, кажется, устраняет так много проблем. Люди идут недели или месяцы без перезагрузки. Я обычно не трачу много времени на изучение правильного способа запуска систем Windows, потому что это не моя основная работа. Что вы порекомендуете?
паром
1
Ах, нет. Тонны компаний не требуют, чтобы их люди перезагружались - вы думаете, они никогда не использовали перенаправление папок? Я предлагаю исправить проблему под рукой. Лично я был бы зол, если бы меня выходили из моей рабочей станции каждый день - я часто позволяю работам работать быстро. Ваша лень может стоить многим людям трудностей - выполняйте свою работу должным образом или нанимайте того, кто это делает.
TomTom
Что ж, делать свою работу правильно - значит не тратить слишком много времени на нашу маленькую систему Windows.
steampowered
Не зная, что ты делаешь? ;) Я увольняю людей, говоря, что они некомпетентны в своей работе, независимо от того, как они работают.
TomTom
Сисадмин - это вспомогательная работа, которую я делаю для своей семьи, чтобы помочь им. Если бы у меня было бесконечное время, я бы прочитал больше книг об окнах и других касательных. Но мой лучший способ заработать деньги - придерживаться веб-программного обеспечения. Я думаю, что ваш ответ вовсе не был в духе предложения технического решения вопроса, который я задал.
steampowered