Удалённо перезагрузить Windows
Здесь описывается процесс удалённой перезагрузки компьютера. Рассмотрим случай, когда комп не в домене. Когда удалённый компьютер в домене — процесс тот же, только всё гораздо проще, просто пропускаете лишние шаги. Имеем:
- Я — админ домена.
- На моём компе Windows 10.
- Перезагружаем удалённо Windows 7.
- Рассматриваем случай когда удалённый компьютер не в домене.
- Я знаю логин-пароль локального админа на удалённом компе.
Кликаем в проводнике на свой компьютер правой кнопкой:
Запускается консоль управления компьютером:
Переходим в раздел Локальные пользователи и группы > Пользователи :
Далее создаём там такого же пользователя, как локальный админ на компьютере, который нам нужно перезагрузить.
Я создаю пользователя Администратор, задаю ему тот же пароль как на удалённом компьютере, добавляю его (на всякий случай) в группу локальных администраторов.
Закрываем все окна. Итак, на моём компе теперь есть локальный юзер с таким же логином-паролем, как и на удалённой машине, которую нужно перезагрузить. Все эти операции нужны только если тачка не в домене.
Создаю на рабочем столе ярлык CMD и правой кнопкой с шифтом запускаю его от имени свежесозданного пользователя:
Запускается командная строка, выполняю на ней mmc:
Запускается консоль управления mmc. Замечу — от имени нового пользователя.
Файл > Добавить или удалить оснастку . Добавляем оснастку управления компьютером:
Нас спросят, каким компьютером мы хотим управлять:
Указываем IP адрес компа, который нужно перезагрузить. Готово. Ок.
Открывается окно управления удалённым компьютером.
Переходим во вкладку «Сервисы», запускаем службу «Удалённый реестр» (Remote Regedit).
Переключаемся на прежнее окно с командной строкой, запущенной от имени нового пользователя и выполяем:
Открывается новое окно «Диалог удалённого завершения работы». Заметим, от имени нового юзера:
Добавляем компьютер, который будем перезагружать: «10.10.10.197». Ставим нужные галки и кликаем ОК.
Таким же образом можно выключать комп или делать прерывание.
Если комп в домене, то пляска с запуском от имени другого пользователя не нужна. Просто запускаете от доменного админа shutdown -i и вперёд.
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.
Удаленный перезапуск службы Windows
В этой небольшой статье будет рассмотрено как можно быстро организовать автоматический или ручной (это уже кому как нравится или по потребности) локальный или удаленный перезапуск службы Windows. К слову, этот способ можно также использовать для удаленного запуска программ Windows независимо от их предназначения. Почему может понадобиться запуск программы на удаленном компьютере или зачем он — удаленный запуск?
Работа одного из серверов компании построена таким образом, что при выполнении определенной задачи, на компьютер администратора с помощью команды net send отправляется информационное сообщение, например «Пришла почта!».
Ситуация, которая может возникнуть, а вместе с ней появиться и необходимость в удаленном перезапуске службы — Мессенджер сервера (служба сообщений, имеющая имя в системе Messenger) иногда зависает. В этом случае сообщение не будет отправлено на сетевую машину. Не всегда есть возможность подойти к серверу, чтобы сделать все вручную. Да и нужно ли? (Хотя иногда администратору приходится побегать и понадобиться купить дешевую обувь в Москве). Но мы пойдем другим путем.
Удаленный перезапуск службы Messenger
Все можно сделать, не вставая из-за своего рабочего места. Для работы будем использовать небольшую программу из пакета системных утилит Марка Руссиновича — PsExec
Небольшое описание с technet.microsoft.com PsExec — описание
Скачать весь пакет утилит, среди которых и PsExec.exe можно по адресу http://download.sysinternals.com/files/PSTools.zip
Таким образом, эта небольшая программа обладает замечательными возможностями, и просто должна иметь место (ИМХО) среди инструментов системного администратора.
На удаленной машине (сервере) создается батник перезапуска службы следующего содержания
Управляем службами Windows с помощью PowerShell. Часть 2
Продолжаем знакомиться с тем, как осуществлять управление службами Windows с использованием PowerShell. В предыдущем посте мы рассмотрели, как получить статус службы на локальном и удаленном компьютере, произвести фильтрацию служб (например, найти только остановленные службы) и определить зависимые службы. В этом посте будут рассмотрены такие достаточно тривиальные вещи, как:
- Остановка службы
- Запуск службы
- Перезапуск службы
- Приостановка и возобновление работы
- Управление удаленными службами
- Настраиваем автозагрузку службы
Мы уделим большее внимание разбору команд в PowerShell для осуществления выше перечисленного на локальном компьютере. В разделе “управление службами удаленных компьютерах” мы рассмотрим, ограничения работы в PowerShell v2 и v3. Подробности под катом.
Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.
Взглянем на эти команды внимательнее.
STOP-SERVICE
Чтобы остановить службу, мы должны уточнить ее имя.
Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.
Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).
Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.
Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:
Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.
Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.
В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.
START-SERVICE
Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.
И снова: если служба уже запущена, командлет ничего не сделает. Однако вы можете попытаться запустить службу и получите такую ошибку.
Причиной тому в большинстве случаев является выключенные службы. Как конфигурировать настройки службы, я расскажу в следующей статье.
Если вы хотите запустить службы и все службы, зависимые от нее, используйте следующее выражение:
Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.
RESTART-SERVICE
Вы удивитесь, но перезапуск службы работает также как два предыдущих примера. Используйте –Passthru, если хотите убедиться, что служба запущена.
Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.
ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ
Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)
В чем же проблема? Смотрим на объект (используя Get-Service).
Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:
Как мы видим, не так много служб удовлетворяют этому требованию.
Готовы возобновить работу службы? Используйте следующее выражение:
Оба командлета также поддерживают –Whatif.
УДАЛЕННЫЕ СЛУЖБЫ
Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.
Управление службами на удаленных компьютерах не ограничивается вышеперечисленным, но это уже будет предмет рассмотрения последующих статей.
Все эти командлеты могут быть использованы в конвейерном выражении и зачастую это лучший вариант. Использование Get-Service для получения объектов и последующая передача их в подходящий командлет.
УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС
Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.
Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.
Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.
К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:
Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.
УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ
Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).
Однако, просто взглянув на объект, мы не сможем сказать, к какому типу автозагрузки он относится.
Как это сделать – одна из тем следующей статьи.
Помните, что изменение типа автозагрузки не повлияет на текущий статус службы.
Так что если вы хотите выключить и остановить (или включить и запустить) службу, передайте объект в подходящий командлет.
Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.