Имеем Windows Server 2012 R2. Задача — автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.
Запускаем Планировщик заданий, создаём в нём папку «reboot»:
Делаем Create Basic Task… Запускается мастер:
Указываем Name, Description:
Кликаем Next:
Выбираем период Weekly. Next:
Указываем начало — ближайший понедельник 5 утра. Ставим галку Monday. Next:
Выбираем Start a program. Next:
В Program/script: пишем:
%SYSTEMROOT%System32shutdown.exe
В Add arguments (optional):
/r /f /t 90 /d p:0:0 /c "Перезапуск по понедельникам. Отмена: shutdown.exe /a"
Где:
- /r — перезагрузка,
- /f — принудительное закрытие всех приложений,
- /t 90 — время ожидания до начала перезагрузки 90 сек,
- /d p:0:0 — причины перезагрузки для журнала. В данном случае, мы указали: p — запланированная перезагрузка, 0:0 — «Other (planned)»,
- /c комментарий в свободной форме длинной не более 512 символов. Комментарий будет показываться юзерам 90 секунд. За это время можно отменить перезагрузку командой shutdown.exe /a.
Список параметров и причин перезагрузки можно посмотреть shutdown.exe /?
Мастер не доделали, кликаем Finish. Создаётся задача — редактируем её.
Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:
Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:
Сам пока не проверял результатов. В ближайший понедельник посмотрим…
P.S.
Две недели прошло — шедулер нормально перезагружает сервер по понедельникам.
This blog has detailed how to schedule Windows Server Reboot Automatically (Windows or Server 2008/2019). You may want to reboot a Windows Server once a week or month as a matter of routine maintenance. It’s particularly useful too. Say if you want to reboot a server because you installed particular software that you didn’t expect needed a restart, or there are some updates. You cannot really do it unless after hours and you don’t need to hang around and then you would just like it to reboot itself a couple of hours after working hours when everyone left.
Note: I’m using Windows Server 2019. This is almost the same as in 2008/2012/0216.
Schedule Windows Server Reboot Automatically
1- Select search bar and type Task Scheduler, click on it to open. You can find it by clicking on the Windows start button, expand Windows Administrator Tools, open Control Panel to select Administrative Tools.
2- Create a new basic task using the Create Task action.
3- Type a name to the task. I renamed it Restart Server or (Restart This Server). Type a description Schedule Windows Server for Automatically restart. Click next
4- Since this task is to just restart the server one time (select one time) and then click next.
5- Provide it a date and time to restart. Click next.
6- Select Start A Program action and then click Next.
7- Type shutdown into the Program/Script box and then /r into the Add arguments box. Click Next.
8- Click Finish.
9- We are almost done if you want this to run if you get logged off and you want to set this up so you can use it again later. In the Task Scheduler right-click on your new task and then select Properties.
10- This will show up on the general settings page. The default settings are “Run only when the user is logged on” switch it to “Run whether the user is logged on or not”. Choose configure to select the Server you want to reboot.
11- Select ok, after typing your administrator password.
Changing the Schedule for The Automatic Reboot
So now we have a task that will automatically reboot our Windows server (Computer, PC) one time.
12- Go back to the Task Scheduler Window, right-click on the task and then click Properties. Select the Triggers tab.
13- Select the One Time trigger and then click the Edit button. Change the time and date, click ok and your server/PC/computer will now restart at the new time.
14- When you click ok it will ask you to re-enter the administrator password.
Watch Video: How to schedule Windows Server reboot automatically.
Перезагрузку Windows сервера или настольного персонального компьютера по расписанию можно реализовать средствами встроенного компонента Microsoft Winodows — планировщика заданий, возможности которого позволяют производить запуск скриптов или программ в заданные моменты времени. Функционально и внешне компонент не имеет никаких отличий в разных версия операционной системы и алгоритм взаимодействия универсален.
Запускаем планировщик заданий любым удобным способом. Например, находим в панели управления или при нажатии сочетания клавиш Пуск+R, вводим в строку taskschd.msc или щелкаем правой кнопкой на меню Пуск и выбираем «Управление компьютером».
Создаем простую задачу. Обязательными полями для заполнения являемся Имя, а поле Описание опционально, заполните его при необходимости.
Определяемся с желаемым графиком запуска нашей задачи автоматической перезагрузки компьютера. Мастер довольно гибко позволяем настроить время и интервалы выполнения (ежедневно, еженедельно, ежемесячно).
Дальше выбираем «Запустить программу» в качестве действия для задачи. Финальным аккордом указываем приложение shutdown.exe используемое в операционной системе как утилита для выключения, перезагрузки или завершения сеанса пользователя.
C:WindowsSystem32shutdown.exe
Обязательно добавляем аргументы для достижения правильного результата. Ключевыми значениями для нас являются /r — перезагрузка, /f — принудительное закрытие всех приложений. Подробнее можно ознакомиться и подобрать аргументы в справочном материале.
Завершаем настройку и ждем время указанное в графике для проверки результата.
Автор: Федотов Илья
A Windows Update requires a reboot on my Windows Server 2019 Azure VM, so I want to schedule my restart for a particular time (5am) when people won’t be working via RDP on this busy application server. However, if I click Start, type in «restart», then click «Schedule your restart» from the Start menu’s search results, I get the «Restart options» screen but I’m stumped by the warning in red text, “*Some settings are managed by your organization”. I’m unable to «Pick a time» because the settings are disabled, and what it’s set to is unacceptable. I created this domain on the cloud, and am the administrator. I do not recall ever blocking access to this. How can I get around this obstacle?
asked Oct 8, 2019 at 18:49
1
By default, «Schedule a time» is greyed out and requires a pending restart to turn
it on.
This is not the general option you are looking for.
You should look instead into enabling automatic active hours.
In Windows 10, and perhaps on Windows Server 2019, use these steps:
- Open Settings > Update & Security > Windows Update
- Toggle of «Automatically adjust active hours for this device based on activity»
- Click Change
- Set your hours and click Save
You will find more options in the Local Group Policy Editor (gpedit.msc
) at:
Computer Configuration > Administrative Templates > Windows Components > Windows Update.
Another interesting place to look into is inside the registry at
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdateAU
.
But note that the effect of any of the above may be changed by Microsoft with
each update, so vigilance is required.
answered Oct 8, 2019 at 19:38
harrymcharrymc
431k30 gold badges495 silver badges876 bronze badges
4
A Windows Update requires a reboot on my Windows Server 2019 Azure VM, so I want to schedule my restart for a particular time (5am) when people won’t be working via RDP on this busy application server. However, if I click Start, type in «restart», then click «Schedule your restart» from the Start menu’s search results, I get the «Restart options» screen but I’m stumped by the warning in red text, “*Some settings are managed by your organization”. I’m unable to «Pick a time» because the settings are disabled, and what it’s set to is unacceptable. I created this domain on the cloud, and am the administrator. I do not recall ever blocking access to this. How can I get around this obstacle?
asked Oct 8, 2019 at 18:49
1
By default, «Schedule a time» is greyed out and requires a pending restart to turn
it on.
This is not the general option you are looking for.
You should look instead into enabling automatic active hours.
In Windows 10, and perhaps on Windows Server 2019, use these steps:
- Open Settings > Update & Security > Windows Update
- Toggle of «Automatically adjust active hours for this device based on activity»
- Click Change
- Set your hours and click Save
You will find more options in the Local Group Policy Editor (gpedit.msc
) at:
Computer Configuration > Administrative Templates > Windows Components > Windows Update.
Another interesting place to look into is inside the registry at
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsWindowsUpdateAU
.
But note that the effect of any of the above may be changed by Microsoft with
each update, so vigilance is required.
answered Oct 8, 2019 at 19:38
harrymcharrymc
431k30 gold badges495 silver badges876 bronze badges
4
Содержание
- Перезагрузка Windows по расписанию
- Настройка планировщика заданий Windows Server 2016
- Доступ к планировщику
- Создание нового простого задания
- Создание нового обычного задания
- Перезагрузка Windows сервера планировщиком заданий
- Как проверить последнюю перезагрузку на Windows Server
- Как проверить последнюю перезагрузку на Windows Server
- Windows Server: как запланировать перезагрузку
- 1. Используйте журнал системных событий
- 2. Используйте командную строку
- 3. Запланируйте перезагрузку с запланированными задачами
- Перезагрузка сервера через командную строку и планировщик задач
Перезагрузка Windows по расписанию
Перезагрузку Windows сервера или настольного персонального компьютера по расписанию можно реализовать средствами встроенного компонента Microsoft Winodows — планировщика заданий, возможности которого позволяют производить запуск скриптов или программ в заданные моменты времени. Функционально и внешне компонент не имеет никаких отличий в разных версия операционной системы и алгоритм взаимодействия универсален.
Запускаем планировщик заданий любым удобным способом. Например, находим в панели управления или при нажатии сочетания клавиш Пуск+R, вводим в строку taskschd.msc или щелкаем правой кнопкой на меню Пуск и выбираем «Управление компьютером».
Создаем простую задачу. Обязательными полями для заполнения являемся Имя, а поле Описание опционально, заполните его при необходимости.
Определяемся с желаемым графиком запуска нашей задачи автоматической перезагрузки компьютера. Мастер довольно гибко позволяем настроить время и интервалы выполнения (ежедневно, еженедельно, ежемесячно).
Дальше выбираем «Запустить программу» в качестве действия для задачи. Финальным аккордом указываем приложение shutdown.exe используемое в операционной системе как утилита для выключения, перезагрузки или завершения сеанса пользователя.
Обязательно добавляем аргументы для достижения правильного результата. Ключевыми значениями для нас являются /r — перезагрузка, /f — принудительное закрытие всех приложений. Подробнее можно ознакомиться и подобрать аргументы в справочном материале.
Завершаем настройку и ждем время указанное в графике для проверки результата.
Источник
Настройка планировщика заданий Windows Server 2016
Планировщик задач Windows Server помогает выполнять заданные пользователем программы в точно указанное заранее время или в роли реакции на определенные события системы. Данная статья представляет собой инструкцию по тщательной настройке планировщика, в том числе по созданию нового задания в операционной системе Windows Server 2016.
Доступ к планировщику
Чтобы запустить планировщик задач Windows Server, выполните следующее:
Рис. 1. Панель управления
Появится окно планировщика (рис. 2).
Создание нового простого задания
На панели расположенной справа выберите команду Создать простую задачу. Появится окно Мастер создания простой задачи. Далее введите имя и описание (рис. 3).
Рис. 3. Мастер создания нового задания
После этого выбираете, как часто вы хотите запускать процесс: ежедневно, раз в неделю, раз в месяц, при запуске компьютера, при выполнении входа в систему, при специфическом событии (рис. 4).
Рис. 4. Настройка триггера
Укажите дату и время начала работы, а также периодичность, например, запуск команды раз в 2 дня.
Рис. 5. Дата и время начала выполнения
Осталось выбрать имя исполнимого (exe) файла программы или сценария, указать аргументы и рабочую папку. Указывать аргументы и папку — необязательно.
Рис. 7. Выбор программы
На следующей странице просмотрите сводку — все ли правильно и, если да, то нажмите кнопку Готово. Созданное вами задание появится в списке (рис. 8).
Рис. 8. Список планировщика
Создание нового обычного задания
Команда Создать задачу отличается от команды Создать простую задачу тем, что вы не увидите окно мастера создания задачи. Вместо него будет окно Создание задачи, где можно определить параметры более гибко.
На вкладке Общие можно определить не только имя и описание, но и важные для пользователя параметры безопасности. Будет ли задание исполняться для каждого при включении или только для тех, кто с помощью пароля и логина вошел в систему. С правами какого именно пользователя (CloudAdmin) будет выполнено, будет ли оно исполнено с наивысшими правами. Все эти параметры определяются на вкладке Общие и мы не могли их задать при создании простой задачи через Windows Server 2016 планировщик заданий.
.
На вкладке Триггеры определяют условия запуска. Нажмите кнопку Создать, чтобы добавить новый триггер. Как показано на рис. 10, здесь мы тоже можем задать параметры более гибко. Например, при ежедневном задании можно указать, через сколько дней остановить процесс или жестко задать срок его действия. Обязательно отметьте флажок Включено, чтобы этот триггер работал.
Рис. 10. Условия запуска
В отличие от простой задачи, при создании обычной вы можете сформировать несколько триггеров.
Вкладка Действия позволяет задать одно или несколько действий, которые будут выполнены при срабатывании триггера из списка триггеров. Как и в случае с триггерами, нажмите кнопку Создать для добавления действия. Из списка Действие можно выбрать тип действия, но, кроме запуска программы, другие действия не поддерживаются в современных ОС. Вы можете создать несколько действий, например, одно будет запускать необходимую вам программу, а второе — отправлять сообщение по электронной почте с помощью программы SendEmail, ссылка на которую была приведена ранее. При простой задаче такая роскошь конфигурации была недоступна.
Рис. 12. Создание действия
Рис. 13. Определенные действия
Вкладка Условия позволяет задать дополнительные условия выполнения задания, например, запускать задачу при простое компьютера, пробуждать компьютер для выполнения задачи Все эти условия более характерны для рабочей станции, нежели чем для сервера, который обычно работает в режиме 24/7.
Рис. 14. Условия задания
Дополнительные параметры задания можно определить на вкладке Параметры. Как правило, они не нуждаются в редактировании, а их назначение понятно без дополнительных комментариев.
Для сохранения задания нажмите кнопку OK. Чтобы видеть все действия, которые выполняет — включить журнал.
На этом все. Если у вас остались вопросы, вы можете обратиться в службу технической поддержки Xelent.
Источник
Перезагрузка Windows сервера планировщиком заданий
Запускаем Планировщик заданий, создаём в нём папку «reboot»:
Делаем Create Basic Task. Запускается мастер:
Указываем Name, Description:
Выбираем период Weekly. Next:
Выбираем Start a program. Next:
В Program/script: пишем:
В Add arguments (optional):
Список параметров и причин перезагрузки можно посмотреть shutdown.exe /?
Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:
Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:
Сам пока не проверял результатов. В ближайший понедельник посмотрим.
Источник
Как проверить последнюю перезагрузку на Windows Server
Как проверить последнюю перезагрузку на Windows Server
Из-за корпоративной природы Windows Server пользователи обычно более технически подкованы и заинтересованы в подробностях, касающихся производительности. Одна из тех интересных вещей, которые нужно знать, это как проверить время последней перезагрузки на Windows Server или как запланировать перезагрузку. Мы обязательно проинструктировали вас об этом ниже.
Windows Server: как запланировать перезагрузку
1. Используйте журнал системных событий
Вы можете использовать журнал системных событий, чтобы узнать, когда была последняя перезагрузка Windows Server. Эта процедура довольно проста, так как единственное важное — выделить одно событие.
Выполните следующие действия, чтобы узнать, когда была последняя перезагрузка с помощью утилиты System Event Log:
2. Используйте командную строку
Кроме того, вы можете использовать определенную команду командной строки, чтобы проверить, когда в последний раз происходила перезагрузка Windows Server. Вы также можете проверить время работы вашего сервера с помощью аналогичной команды.
Выполните следующие действия, чтобы проверить последнюю перезагрузку через командную строку:
3. Запланируйте перезагрузку с запланированными задачами
Если вы заинтересованы в автоматизации последовательности перезагрузки, вы можете сделать это, создав запланированное задание. Если вы не знакомы с ним, вот как запланировать перезагрузку на Windows Server с помощью утилиты запланированных задач:
СВЯЗАННЫЕ ИСТОРИИ, КОТОРЫЕ ВЫ ДОЛЖНЫ УЗНАТЬ:
Источник
Перезагрузка сервера через командную строку и планировщик задач
Иногда сервера необходимо перезагружать, например, для установки обновлений. В рабочее время, зачастую, сделать это не возможно по причине того, что пользователи работают с сервером и прерывать их работу не вариант. Конечно, можно или задержаться на работе или прийти раньше для выполнения перезагрузки… Но гораздо проще и удобнее запланировать перезагрузку через диспетчер задач.
Для начала рассмотрим, как перезагрузить (или выключить) систему через командную строку. В этом нам поможет утилита shutdown.exe. Не будем рассматривать все возможные параметры использования, их можно посмотреть запустив программу из консоли с параметром /? или просто без параметра, рассмотрим набор параметров, который использую я.
shutdown.exe /r /f /t 90 /d p:2:16 /c «Перезапуск для установки обновлений»
/r — перезагрузка сервера
/f — принудительное закрытие всех приложений.
/t 90 — время ожидания до начала перезагрузки 90 сек.
/d p:2:16 — указание причины перезагрузки, которая отобразиться в системном журнале. В данном случае, мы указали:
p — запланированная перезагрузка, 2:16 — «Операционная система: Установка пакета обновления (Запланировано)»
/c «Перезапуск для установки обновлений» — комментарий в свободной форме длинной не более 512 символов.
Итак, после выполнения данной строки на экране появится окно с указанным нами комментарием.
Пока идет указанное нами время ожидания, есть возможность прервать запуск перезагрузки в случае необходимости выполнив shutdown.exe /a в командной строке.
После окончания времени ожидания станция будет перезагружена. При этом в системный журнал попадет запись о перезагрузке, ее причинах и нашим комментарием.
Таким образом, если за серверами следят несколько Администраторов, у них не будет вопросов почему сервер перезагружался.
Для того чтобы запланировать перезагрузку, разумно использовать планировщик задач. Не буду здесь описывать как создавать в нем задачи, отмечу только, что параметры командной строки следует вынести в соответствующую строчку, как на скриншоте
Обратите внимание, что путь я преобразовал через системную переменную:
Таким образом, не важно на какой диск установлена система, программа запустится.
Созданную задачу можно устанавливать на определенные дату/время с повторением или без по вашему желанию. Система будет перезагружена в назначенное время и в системном журнале останется соответствующая запись.
Разумеется, вы можете экспортировать созданную задачу в xml-файл и использовать как шаблон при создании подобной задачи на другом сервере вашей сети.
Следует также отметить, что таким же образом можно перезагрузить (или выключить) удаленный компьютер, если использовать параметр /m \ИМЯ_КОМПЬЮТЕРА.
Утилита Shutdown имеет и оконный интерфейс, для этого утилиту следует запустить с ключом /i
Данный диалог позволяет выполнить перезагрузку на компьютерах сети (AD) без использования командной строки.
Источник
Содержание
- Windows server перезагрузка по расписанию
- Удаленная перезагрузка компьютера
- Перезагрузка компьютера с задержкой по времени
- Скрипт PowerShell для перезагрузки по расписанию
- Команда Shutdown: выключение и перезагрузка Windows из командной строки
- Выключение Windows командой Shutdown
- Перезагрузка Windows
- Завершение сеанса пользователя
- Перевод компьютера в режим гибернации
- Перезагрузка компьютера с сообщением пользователям
- Отложенное выключение / перезагрузка компьютера
- Отмена выключения / перезагрузки компьютера
- Перезагрузить компьютер немедленно
- Запуск команды shutdown на удаленных компьютерах
- Графический интерфейс команды shutdown
- Ярлык для перезагрузки компьютера
Windows server перезагрузка по расписанию
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами разбирали перезагрузку сервера из командной строки, в данной публикации я хочу вас научить обычной и удаленной перезагрузке компьютера средствами PowerShell, который прочно вошел в нашу жизнь. Уверен, что вы сами сможете определить себе сценарии, которые сможете использовать в своей практике.
Перезагрузка компьютера, это базовая процедура в операционной системе, и для большинства людей достаточно графического варианта, но бывают ситуации, что у вас может быть с помощью групповой политики убрана кнопка перезагрузки, или же вам нужно перезагрузить сразу пачку серверов, в таких ситуациях вас выручит PowerShell.
Открываем окно PowerShell в режиме администратора и знакомимся с командлетом Restart-Computer.Первое, что я вам советую сделать, это ознакомиться со справкой командлета, для этого введите:
Для того, чтобы была выполнена локальная перезагрузка компьютера, вам достаточно ввести данный командлет:
Как видим компьютер уходит в перезагрузку.
Так же можно использовать команду с добавлением ключа -ComputerName
Тут так же будет выполнена перезагрузка компьютера, хочу отметить, что localhost означает локальный компьютер, но вам никто не мешает тут ввести и имя локального компьютера.
Удаленная перезагрузка компьютера
Как я и говорил ранее PowerShell, это прекрасный инструмент по удаленному управлению компьютерами, серверами и службами. Предположим, что у меня есть RDS ферма состоящая из 10 серверов с Windows Server 2019. Мне необходимо произвести обслуживание четырех серверов, для этого я перевожу их в режим стока (Drain Mode) чтобы отсечь новые подключения, и рассылаю уведомление сотрудникам, через msg, чтобы сотрудники перелогинились. После я начинаю обслуживать данные системы, когда я заканчиваю, то мне необходимо их перезагрузить. Для этого мы воспользуемся вот такой конструкцией:
После выполнения команды компьютер уходит в перезагрузку, если этого не произошло, то вы с большой вероятностью получите ошибку:
+ CategoryInfo : OperationStopped: (w10-cl02:String) [Restart-Computer], InvalidOperationException
+ FullyQualifiedErrorId : RestartcomputerFailed,Microsoft.PowerShell.Commands.RestartComputerCommand
Restart-Computer : Не удалось перезагрузить компьютер w10-cl03 со следующим сообщение об ошибке: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями.
строка:1 знак:1
+ Restart-Computer -ComputerName w10-cl02, w10-cl03
+
+ CategoryInfo : OperationStopped: (w10-cl03:String) [Restart-Computer], InvalidOperationException
+ FullyQualifiedErrorId : RestartcomputerFailed,Microsoft.PowerShell.Commands.RestartComputerCommand
Тут вся загвоздка в том, что за компьютерами остались активные сессии работающих пользователей, именно в интерактивном режиме. В таких случаях, если они не вышли и не реагируют на ваши сообщения, вы можете принудительно произвести перезагрузку компьютера с чистой совестью. Для этого можно использовать ключ -Force, в результате PowerShell конструкцию будет выглядеть таким образом:
Как видим команда успешно отработала и была произведена перезагрузка компьютера.
Если вы хотите перезагрузить удаленный компьютер от имени определенного пользователя, то данный командлет вам это позволит сделать. Для этого введите:
В результате у вас появится окно для ввода пароля пользователя, указываем его и нажимаем «Ok». Кстати если на удаленном компьютере, который требуется перезагрузить, будет активная сессия пользователя в интерактивном режиме, то вам так же выскочит ошибка, что «компьютер используется другими пользователями» и вам нужно будет добавлять ключик -Force:
В логах Windows на тех компьютерах, в журнале система, вы сможете обнаружить событие с кодом ID 1074(/kak-uznat-kto-perezagruzil-server-windows/), в котором вы увидите, кто перезагрузил систему:
Предположим, что у вас есть список компьютеров, которые требуется удаленно перезагрузить. В такой ситуации сам Бог велел использовать PowerShell. Структура файла выглядит очень просто, обычный текстовый документ, формата txt. На каждой строке по одному имени компьютера, без запятых. Я положил его в корень диска C:.
Для того, чтобы прочитать данный файл есть командлет Get-Content и конструкция команды принимает вот такой вид:
В итоге удаленная перезагрузка компьютера через PowerShell успешно отработала и все системы из файла обслужены.
Перезагрузка компьютера с задержкой по времени
Еще очень частая ситуация, это перезапуск компьютера, но через определенное время, предположим, через 60 секунд, чтобы какие-то другие вещи успели отработать, очень часто применяется в сценариях и скриптах. Для выполнения это задачи есть командлет Start-Sleep. Пишем команду:
В ключе -Seconds вы задаете время в секундах.
так же у вас есть возможность определить механизм, который используется для аутентификации учетных данных пользователя. Этот параметр был введен в Windows PowerShell 3.0. Называется этот ключ -WsmanAuthentication. На выбор у вас будет пять вариантов: Basic, CredSSP, Default, Digest, Kerberos и Negotiate.
В моем примере я буду использовать проверку подлинности Kerberos, напоминаю, что для этого у вас на удаленных компьютерах должна быть настроена служба WinRM и политика, определяющая с каких ip-адресов вы можете производить подключение к ней. В итоге команда принимает такой вид:
После ее выполнения удаленные компьютеры уходят в перезагрузку.
Скрипт PowerShell для перезагрузки по расписанию
Предположим, что вам нужно перезагрузить компьютер по расписанию, это можно сделать и групповыми политиками, а так же и через задачу по расписанию, актуально для компьютеров не в домене. Вы в задаче подкладывает ваш скрипт PowerShell, чтобы выполнять его в нужное время, но с уведомлением человека. Ниже текст скрипта.
$wshell.Popup(«Данный компьютер будет перезагружен»,10,»Сохраните свои данные»,0x0)
$wshell.Popup(«Перезагрузка будет через 30 секунд»,2,»Не забудьте сохранить данные»,0x0)
Restart-Computer -ComputerName w10-cl01
Еще бонусом перезагрузка локального компьютера может быть выполнена и с помощью WMI. Для этого в оболочке PowerShell введите;
Команда Shutdown: выключение и перезагрузка Windows из командной строки
Утилита командной строки shutdown является встроенной командой Windows, которая позволяет перезагрузить, выключить компьютер, перевести его в спящий режим или завершить сеанс пользователя. В этой инструкции мы покажем основные примеры использования команды shutdown в Windows (все рассмотренные команды запускаются в окне Выполнить — Win+R ->, в командной строке cmd.exe или в консоли PowerShell).
Команда shutdown имеет следующий синтаксис:
shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \компьютер][/t xxx][/d [p|u]xx:yy [/c «комментарий»]]
Как вы видите, у команды довольно много опций, а также есть возможность выполнять операции выключения/перезагрузки на удаленном компьютере.
Выключение Windows командой Shutdown
Для выключения ОС Windows и компьютера необходимо использовать команду shutdown с ключом /s.
Перезагрузка Windows
Чтобы перезагрузить компьютер, необходимо добавить параметр /r. После выполнения этой команды Windows корректно перезагрузится.
Завершение сеанса пользователя
Чтобы завершить текущую сессию пользователя (logout), нужно выполнить команду:
Эта команда аналогично выполнению команды logoff.
Перевод компьютера в режим гибернации
Для перевода компьютер в режим гибернации (в этом режиме все содержимое памяти записывается в файл hyberfil.sys на диск и компьютер переходит в спящий режим с пониженным электропотреблением), выполните команду:
Перезагрузка компьютера с сообщением пользователям
Вы можете предупредить всех пользователей Windows о предстоящем выключении / перезагрузки компьютера или сервера, отправив сообщение во все активные сессии (как правило эта возможность используется на терминальных RDS серверах, за которыми одновременно работают несколько пользователей, каждый в своей собственной RDP сессии).
shutdown /r /c “Этот сервер будет перезагружен через 60 секунд.”
Отложенное выключение / перезагрузка компьютера
Можно выключить или перезагрузить компьютер с определенной задержкой (по таймеру). С помощью опции /t можно указать интервал времени (в секундах), через который ПК/сервер будет перезагружен или выключен. Тем самым вы можете предоставить пользователям дополнительное время для того, чтобы успеть сохранить открытые файлы и корректно закрыть приложения. Эту опцию удобно использовать совместно с отправкой сообщения. В этом примере мы указываем, что Windows будет выключена через 10 минут (600 секунд) и информируем пользователей сообщением.
shutdown /s /t 600 /c «Сервер будет выключен через 10 минут. Сохраните свои документы!»
Пользователю будет выдано предупреждение о запланированном выключении: Ваш сеанс будет завершен.
Если задержка очень длительная, например, 100 минут (6000 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана: «Ваш сеанс будет завершен. Работа Windows будет завершена через 100 мин».
Отмена выключения / перезагрузки компьютера
После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратора может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:
После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана: «Выход из системы отменен. Запланировано завершение работы отменено».
Перезагрузить компьютер немедленно
Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:
Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).
Следующая команда выполнит перезагрузку компьютера с автоматическим запуском всех зарегистрированных приложений после перезагрузки (имеются в виду приложения, зарегистрированные в системе с использованием функции API RegisterApplicationRestart).
Запуск команды shutdown на удаленных компьютерах
Вы можете перезагрузить удаленный компьютер по сети, для этого у вас должен быть к нему сетевой доступ, а учетная запись, из-под которой запускается команда shutdown должна входить в группу локальных администраторов на удаленном компьютере (сервере):
shutdown /r /t 120 /m \192.168.1.100
Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.
reg add «HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem» /v «LocalAccountTokenFilterPolicy» /t REG_DWORD /d 1 /f
Если вам необходимо удаленно перезагрузить множество компьютеров, их список можно сохранить в текстовый файл и запустить удаленную перезагрузку всех компьютеров с помощью такого PowerShell скрипта:
$sh_msg = «Ваш компьютер будет автоматически перезагружен через 10 минут. Сохраните свои файлы и закройте запущенные программы»
$sh_delay = 600 # секунд
$computers = gc C:PSPC-list.txt
foreach ($comp in $computers)
<
& ‘C:WindowsSystem32SHUTDOWN.exe’ «-m \$comp -r -c $sh_msg -t $sh_delay»
>
Графический интерфейс команды shutdown
Для тех, кому не комфортно работать в командной строке, есть графический интерфейс для команды shutdown, чтобы его вызвать, наберите:
Как вы видите, в диалоге удаленного завершения работы вы можете добавить несколько компьютеров, которые нужно перезагрузить/выключить, указать текст уведомления и задать причину выключения для сохранения в журнале Windows.
Ярлык для перезагрузки компьютера
Для удобства пользователей вы можете создать на рабочем столе ярлыки для выключения или перезагрузки компьютера с нужными настройками. Такой ярлык может быть полезен для выполнения перезагрузки из RDP сессии, когда отсутствуют кнопки перезагрузки/завершения работы компьютера в меню Пуск.
Если вы хотите, чтобы ваш компьютер или сервер всегда выключался / перезагружался в определенное время, вы можете добавить команду shutdown с определенными параметрами в планировщик заданий Windows taskschd.msc.
Например, следующее задание планировщика будет ежедневно перезагружать компьютер ночью в 0:00.
Task Scheduler enables you to automatically perform routine tasks on a chosen computer. Task Scheduler does this by monitoring whatever criteria you choose (referred to as triggers) and then executing the tasks when those criteria are met. You can use the Task Scheduler to execute tasks such as starting an application, sending an email message, etc. Tasks can be scheduled to execute in response to these events, or triggers. On how to create a Scheduled task with Windows Admin Center, how to setup Windows server backup and create backup jobs, and how to create Windows Task Scheduler via the command prompt.
To perform these steps via the task scheduler, follow the steps below. Ensure you have your script ready and saved with .ps1 extension.
- Search and launch the Task Scheduler Tool as shown below or
From the Start menu, select Administrative Tools and then Task Scheduler.
This will open up the task scheduler Tool
– Right-click on Task Scheduler or “under Actions”
– Select “Create Task”
This will open up the create task dialog window as shown below.
– On the General Tab, Enter the Task Name
– Enter a description for others to understand what you are doing
– Select “Run whether user is logged on or not”
If this is not selected and the first option is used, the script may not run when a user does not login. We have had a similar issue in the past.
– Ensure to run with the highest privilege (Here you have to evaluate your security need)
Note: If you are using an account with administrative privileges, the default user should be fine. If you are running a Command Prompt or PowerShell command, you can select the Run whether user is logged on or not option to prevent the command window from showing up when the task runs automatically.
- If the task requires elevated privileges, check the Run with highest privileges option.
Navigate to the Trigger Tab as shown below
– Click on New, This will open a window where the trigger can be defined.
Since we are defining this task for Windows update, and maintenance are done just one in a Month, I will perform the following highlighted in red.
You can decide to have the updates installed on a particular day.
– By selecting the Days and from the dropdown menu, you can select a date. When you are done creating the trigger, The following configured trigger will be displayed as shown below
Next. click on the Action tab
This will open a new Action tab as shown below
– Under the “Settings” section, in the “Program/script” field, specify the path for the application (Here you will have to select the script by browsing to the location or copy the script path to this field).
– Optionally enter the “PowerShell.exe” program path needed to run your script. When this is not select, your script cannot run.
Note: If you don't know the path of the app, click the Browse button to find it. Also, if it is a known application like PowerShell or Command Prompt, all you need to do is to specify the file name.
Note: Use the "Action" drop-down menu and select the Start a program option.You can still use the Send an e-mail or Display a message option, but these are deprecated features, which means that they may or may not work because Microsoft is no longer maintaining them. - In the "Add arguments" field, you can specify arguments to run the task with special instructions. E.g., -NoExit -ExecutionPolicy Bypass C:PATHTOSCRIPTfirst_script.ps1. Using the "powershell.exe" command and the above argument, it'll run the script named "first_script.ps1." The argument "-ExecutionPolicy Bypass" ensures that the script runs successfully, and the "-NoExit" argument will prevent the window from closing after running the script.
When this step is complete, it will appear as shown below
Note: You can also edit the Action after it has been created etc.
Next, click on the condition tab as shown above.
– For me, these settings are not applicable, but below is a screenshot of how it looks like 🙂
Also, on the settings tab, all needed
This will prompt you to enter your password as shown below
To view the configured task, click on the “Task Scheduler Library” and
– Search for your configured task on the left pane of the Window.
To test this task, since the date we have configured this task to run is still in the future, we will manually run the task as shown below.
– For more information on how to run, edit, and delete a task using Task Scheduler GUI (taskschd.msc), see the following link.
– Right-click on the task and
– Click on run
In this same manner, the task can be disabled or also from the Actions pane
– Now that you have selected to run your scheduled task, the status will change to running as shown below.
– With the F5 button on your keyboard, you can use this to refresh the states
I hope you found this blog post helpful. If you have any questions, please let me know in the comment session.
Перезагрузка сервера через командную строку и планировщик задач
Иногда сервера необходимо перезагружать, например, для установки обновлений. В рабочее время, зачастую, сделать это не возможно по причине того, что пользователи работают с сервером и прерывать их работу не вариант. Конечно, можно или задержаться на работе или прийти раньше для выполнения перезагрузки… Но гораздо проще и удобнее запланировать перезагрузку через диспетчер задач.
Для начала рассмотрим, как перезагрузить (или выключить) систему через командную строку. В этом нам поможет утилита shutdown.exe. Не будем рассматривать все возможные параметры использования, их можно посмотреть запустив программу из консоли с параметром /? или просто без параметра, рассмотрим набор параметров, который использую я.
shutdown.exe /r /f /t 90 /d p:2:16 /c "Перезапуск для установки обновлений"
в данном случае:
/r — перезагрузка сервера
/f — принудительное закрытие всех приложений.
/t 90 — время ожидания до начала перезагрузки 90 сек.
/d p:2:16 — указание причины перезагрузки, которая отобразиться в системном журнале. В данном случае, мы указали:
p — запланированная перезагрузка, 2:16 — «Операционная система: Установка пакета обновления (Запланировано)»
/c «Перезапуск для установки обновлений» — комментарий в свободной форме длинной не более 512 символов.
Итак, после выполнения данной строки на экране появится окно с указанным нами комментарием.
Пока идет указанное нами время ожидания, есть возможность прервать запуск перезагрузки в случае необходимости выполнив shutdown.exe /a в командной строке.
После окончания времени ожидания станция будет перезагружена. При этом в системный журнал попадет запись о перезагрузке, ее причинах и нашим комментарием.
Таким образом, если за серверами следят несколько Администраторов, у них не будет вопросов почему сервер перезагружался.
Для того чтобы запланировать перезагрузку, разумно использовать планировщик задач. Не буду здесь описывать как создавать в нем задачи, отмечу только, что параметры командной строки следует вынести в соответствующую строчку, как на скриншоте
Обратите внимание, что путь я преобразовал через системную переменную:
%SYSTEMROOT%System32shutdown.exe
Таким образом, не важно на какой диск установлена система, программа запустится.
Созданную задачу можно устанавливать на определенные дату/время с повторением или без по вашему желанию. Система будет перезагружена в назначенное время и в системном журнале останется соответствующая запись.
Разумеется, вы можете экспортировать созданную задачу в xml-файл и использовать как шаблон при создании подобной задачи на другом сервере вашей сети.
Следует также отметить, что таким же образом можно перезагрузить (или выключить) удаленный компьютер, если использовать параметр /m \ИМЯ_КОМПЬЮТЕРА.
Утилита Shutdown имеет и оконный интерфейс, для этого утилиту следует запустить с ключом /i
Данный диалог позволяет выполнить перезагрузку на компьютерах сети (AD) без использования командной строки.
Статьи в тему:
Shutdown (technet)
Перезагрузка или завершение работы удаленного компьютера и документирование причины
(Visited 4 098 times, 1 visits today)
Posted by Rewalon
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами разбирали перезагрузку сервера из командной строки, в данной публикации я хочу вас научить обычной и удаленной перезагрузке компьютера средствами PowerShell, который прочно вошел в нашу жизнь. Уверен, что вы сами сможете определить себе сценарии, которые сможете использовать в своей практике.
Перезагрузка компьютера, это базовая процедура в операционной системе, и для большинства людей достаточно графического варианта, но бывают ситуации, что у вас может быть с помощью групповой политики убрана кнопка перезагрузки, или же вам нужно перезагрузить сразу пачку серверов, в таких ситуациях вас выручит PowerShell.
Открываем окно PowerShell в режиме администратора и знакомимся с командлетом Restart-Computer.Первое, что я вам советую сделать, это ознакомиться со справкой командлета, для этого введите:
Для того, чтобы была выполнена локальная перезагрузка компьютера, вам достаточно ввести данный командлет:
Как видим компьютер уходит в перезагрузку.
Так же можно использовать команду с добавлением ключа -ComputerName
Тут так же будет выполнена перезагрузка компьютера, хочу отметить, что localhost означает локальный компьютер, но вам никто не мешает тут ввести и имя локального компьютера.
Удаленная перезагрузка компьютера
Как я и говорил ранее PowerShell, это прекрасный инструмент по удаленному управлению компьютерами, серверами и службами. Предположим, что у меня есть RDS ферма состоящая из 10 серверов с Windows Server 2019. Мне необходимо произвести обслуживание четырех серверов, для этого я перевожу их в режим стока (Drain Mode) чтобы отсечь новые подключения, и рассылаю уведомление сотрудникам, через msg, чтобы сотрудники перелогинились. После я начинаю обслуживать данные системы, когда я заканчиваю, то мне необходимо их перезагрузить. Для этого мы воспользуемся вот такой конструкцией:
После выполнения команды компьютер уходит в перезагрузку, если этого не произошло, то вы с большой вероятностью получите ошибку:
+ CategoryInfo : OperationStopped: (w10-cl02:String) [Restart-Computer], InvalidOperationException
+ FullyQualifiedErrorId : RestartcomputerFailed,Microsoft.PowerShell.Commands.RestartComputerCommand
Restart-Computer : Не удалось перезагрузить компьютер w10-cl03 со следующим сообщение об ошибке: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями.
строка:1 знак:1
+ Restart-Computer -ComputerName w10-cl02, w10-cl03
+
+ CategoryInfo : OperationStopped: (w10-cl03:String) [Restart-Computer], InvalidOperationException
+ FullyQualifiedErrorId : RestartcomputerFailed,Microsoft.PowerShell.Commands.RestartComputerCommand
Тут вся загвоздка в том, что за компьютерами остались активные сессии работающих пользователей, именно в интерактивном режиме. В таких случаях, если они не вышли и не реагируют на ваши сообщения, вы можете принудительно произвести перезагрузку компьютера с чистой совестью. Для этого можно использовать ключ -Force, в результате PowerShell конструкцию будет выглядеть таким образом:
Как видим команда успешно отработала и была произведена перезагрузка компьютера.
Если вы хотите перезагрузить удаленный компьютер от имени определенного пользователя, то данный командлет вам это позволит сделать. Для этого введите:
В результате у вас появится окно для ввода пароля пользователя, указываем его и нажимаем «Ok». Кстати если на удаленном компьютере, который требуется перезагрузить, будет активная сессия пользователя в интерактивном режиме, то вам так же выскочит ошибка, что «компьютер используется другими пользователями» и вам нужно будет добавлять ключик -Force:
В логах Windows на тех компьютерах, в журнале система, вы сможете обнаружить событие с кодом ID 1074(/kak-uznat-kto-perezagruzil-server-windows/), в котором вы увидите, кто перезагрузил систему:
Предположим, что у вас есть список компьютеров, которые требуется удаленно перезагрузить. В такой ситуации сам Бог велел использовать PowerShell. Структура файла выглядит очень просто, обычный текстовый документ, формата txt. На каждой строке по одному имени компьютера, без запятых. Я положил его в корень диска C:.
Для того, чтобы прочитать данный файл есть командлет Get-Content и конструкция команды принимает вот такой вид:
В итоге удаленная перезагрузка компьютера через PowerShell успешно отработала и все системы из файла обслужены.
Перезагрузка компьютера с задержкой по времени
Еще очень частая ситуация, это перезапуск компьютера, но через определенное время, предположим, через 60 секунд, чтобы какие-то другие вещи успели отработать, очень часто применяется в сценариях и скриптах. Для выполнения это задачи есть командлет Start-Sleep. Пишем команду:
В ключе -Seconds вы задаете время в секундах.
так же у вас есть возможность определить механизм, который используется для аутентификации учетных данных пользователя. Этот параметр был введен в Windows PowerShell 3.0. Называется этот ключ -WsmanAuthentication. На выбор у вас будет пять вариантов: Basic, CredSSP, Default, Digest, Kerberos и Negotiate.
В моем примере я буду использовать проверку подлинности Kerberos, напоминаю, что для этого у вас на удаленных компьютерах должна быть настроена служба WinRM и политика, определяющая с каких ip-адресов вы можете производить подключение к ней. В итоге команда принимает такой вид:
После ее выполнения удаленные компьютеры уходят в перезагрузку.
Скрипт PowerShell для перезагрузки по расписанию
Предположим, что вам нужно перезагрузить компьютер по расписанию, это можно сделать и групповыми политиками, а так же и через задачу по расписанию, актуально для компьютеров не в домене. Вы в задаче подкладывает ваш скрипт PowerShell, чтобы выполнять его в нужное время, но с уведомлением человека. Ниже текст скрипта.
$wshell.Popup(«Данный компьютер будет перезагружен»,10,»Сохраните свои данные»,0x0)
$wshell.Popup(«Перезагрузка будет через 30 секунд»,2,»Не забудьте сохранить данные»,0x0)
Restart-Computer -ComputerName w10-cl01
Еще бонусом перезагрузка локального компьютера может быть выполнена и с помощью WMI. Для этого в оболочке PowerShell введите;
Restart-Computer
Restarts the operating system on local and remote computers.
Syntax
Description
This cmdlet is only available on the Windows platform.
The Restart-Computer cmdlet restarts the operating system on the local and remote computers.
You can use the parameters of Restart-Computer to run the restart operations, to specify the authentication levels and alternate credentials, to limit the operations that run at the same time, and to force an immediate restart.
Starting in Windows PowerShell 3.0, you can wait for the restart to complete before you run the next command. Specify a waiting time-out and query interval, and wait for particular services to be available on the restarted computer. This feature makes it practical to use Restart-Computer in scripts and functions.
Examples
Example 1: Restart the local computer
Restart-Computer restarts the local computer.
Example 2: Restart multiple computers
Restart-Computer can restart remote and local computers. The ComputerName parameter accepts an array of computer names.
Example 3: Get computer names from a text file
Restart-Computer gets a list of computer names from a text file and restarts the computers. The ComputerName parameter isn’t specified. But because it’s the first position parameter, it accepts the computer names from the text file that are sent down the pipeline.
Get-Content uses the Path parameter to get a list of computer names from a text file, Domain01.txt. The computer names are sent down the pipeline. Restart-Computer restarts each computer.
Example 4: Force restart of computers listed in a text file
This example forces an immediate restart of the computers listed in the Domain01.txt file. The computer names from the text file are stored in a variable. The Force parameter forces an immediate restart.
Get-Content uses the Path parameter to get a list of computer names from a text file, Domain01.txt. The computer names are stored in the variable $Names . Get-Credential prompts you for a username and password and stores the values in the variable $Creds . Restart-Computer uses the ComputerName and Credential parameters with their variables. The Force parameter causes an immediate restart of each computer.
Example 6: Restart a remote computer and wait for PowerShell
Restart-Computer restarts the remote computer and then waits up to 5 minutes (300 seconds) for PowerShell to become available on the restarted computer before it continues.
Restart-Computer uses the ComputerName parameter to specify Server01. The Wait parameter waits for the restart to finish. The For specifies that PowerShell can run commands on the remote computer. The Timeout parameter specifies a five-minute wait. The Delay parameter queries the remote computer every two seconds to determine whether it’s restarted.
Example 7: Restart a computer by using WsmanAuthentication
Restart-Computer restarts the remote computer using the WsmanAuthentication mechanism. Kerberos authentication determines whether the current user has permission to restart the remote computer. For more information, see AuthenticationMechanism.
Restart-Computer uses the ComputerName parameter to specify the remote computer, Server01. The WsmanAuthentication parameter specifies the authentication method as Kerberos.
Parameters
Specifies one computer name or a comma-separated array of computer names. Restart-Computer accepts ComputerName objects from the pipeline or variables.
Type the NetBIOS name, an IP address, or a fully qualified domain name of a remote computer. To specify the local computer, type the computer name, a dot . , or localhost.
This parameter doesn’t rely on PowerShell remoting. You can use the ComputerName parameter even if your computer isn’t configured to run remote commands.
If the ComputerName parameter isn’t specified, Restart-Computer restarts the local computer.
Type: | String [ ] |
Aliases: | CN, __SERVER, Server, IPAddress |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Prompts you for confirmation before running Restart-Computer .
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a user account that has permission to do this action. The default is the current user.
Type a user name, such as User01 or Domain01User01, or enter a PSCredential object generated by the Get-Credential cmdlet. If you type a user name, you’re prompted to enter the password.
Credentials are stored in a PSCredential object and the password is stored as a SecureString.
For more information about SecureString data protection, see How secure is SecureString?.
Type: | PSCredential |
Position: | 1 |
Default value: | Current user |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the frequency of queries, in seconds. PowerShell queries the service specified by the For parameter to determine whether the service is available after the computer is restarted.
This parameter is valid only together with the Wait and For parameters.
This parameter was introduced in Windows PowerShell 3.0.
If the Delay parameter isn’t specified, Restart-Computer uses a five second delay.
Type: | Int16 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the behavior of PowerShell as it waits for the specified service or feature to become available after the computer restarts. This parameter is only valid with the Wait parameter.
The acceptable values for this parameter are:
- Default: Waits for PowerShell to restart.
- PowerShell: Can run commands in a PowerShell remote session on the computer.
- WMI: Receives a reply to a Win32_ComputerSystem query for the computer.
- WinRM: Can establish a remote session to the computer by using WS-Management.
This parameter was introduced in Windows PowerShell 3.0.
Type: | WaitForServiceTypes |
Accepted values: | Wmi, WinRM, PowerShell |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Forces an immediate restart of the computer.
Type: | SwitchParameter |
Aliases: | f |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the duration of the wait, in seconds. When the timeout elapses, Restart-Computer returns to the command prompt, even if the computers aren’t restarted.
The Timeout parameter is only valid with the Wait parameter. Timeout overrides the Wait parameter’s indefinite waiting period.
This parameter was introduced in Windows PowerShell 3.0.
Type: | Int32 |
Aliases: | TimeoutSec |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Restart-Computer suppresses the PowerShell prompt and blocks the pipeline until the computers have restarted. You can use this parameter in a script to restart computers and then continue to process when the restart is finished.
The Wait parameter waits indefinitely for the computers to restart. You can use Timeout to adjust the timing and the For and Delay parameters to wait for particular services to become available on the restarted computers.
The Wait parameter isn’t valid when you’re restarting the local computer. If the value of the ComputerName parameter contains the names of remote computers and the local computer, Restart-Computer generates a non-terminating error for Wait on the local computer, but waits for the remote computers to restart.
This parameter was introduced in Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Shows what would happen if the Restart-Computer runs. The Restart-Computer cmdlet isn’t run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the mechanism that is used to authenticate the user credentials. This parameter was introduced in Windows PowerShell 3.0.
The acceptable values for this parameter are: Basic, CredSSP, Default, Digest, Kerberos, and Negotiate.
Credential Security Service Provider (CredSSP) authentication, in which the user credentials are passed to a remote computer to be authenticated, is designed for commands that require authentication on more than one resource, such as accessing a remote network share. This mechanism increases the security risk of the remote operation. If the remote computer is compromised, the credentials that are passed to it can be used to control the network session.
Как перезагрузить компьютер удаленно через Powershell
В Powershell есть возможность удаленного выполнения команд. Этот механизм я описывал в этой статье. Если вы никогда не исполняли командлеты типа Invoke-Command или New-PSSession я попробую вкратце объяснить.
Вообще для удаленной перезагрузки Powershell нужно выполнить следующий командлет:
Где:
$cred — переменная, которая хранит учетные данные (логин/пароль). Она не обязательна, если вы администратор на удаленном компьютере
-ComputerName — имя компьютера, который будем перезагружать
-ScriptBlock — значит, что мы посылаем команду перезагрузки
Второй вариант такой:
Отличия между командами в том, что в первом случае мы посылаем команду перезагрузки сразу, а во втором мы сначала подключаемся, а затем перезагружаем компьютер через Powershell. Отмечу, что во втором случае, если команда не выполнится то вы можете перезагрузить свой компьютер (выполняйте последовательно что бы предотвратить это).
В чем могут быть проблемы при удаленной перезагрузки компьютера
Если вы находитесь в домене, то удаленные команды Powershell должны выполнится при условии, что у вас запущен WinRM, а он запускается так:
Вы так же должны быть с полномочиями администратора удаленного компьютера (по умолчанию WinRM работает так). Если вместо имени компьютера вы используете IP или вы не в домене, то вы используете не Kerberos, а NTLM и он по умолчанию выключен. Для этого вам нужно либо выпустить SSL сертификат, либо должны выполнить такую команду:
Где вместо 192.168.3.134 должны вписать IP компьютера к которому хотите подключиться. Можно сделать и так:
Но в этом случае вы сможете подключаться ко всем компьютерам. Проблема в том, что NTLM не осуществляет проверку подлинности и из-за этого такой вариант не рекомендуется.
Если у вас все же не получается перезагрузить компьютер, попробуйте прочитать эту статью.