Как перезапустить службу на удаленном компьютере

Обновлено: 24.11.2024

В этой статье я покажу вам, как перезапускать службы на удаленных компьютерах с помощью PowerShell. Я также предоставлю образец сценария PowerShell, который вы можете настроить для своих целей.

Ситарам Памарти работает инженером по Windows, и его особые области интересов включают PowerShell, Active Directory, Exchange и виртуализацию.

  • Добавление пользователя или группы домена в список локальных администраторов с помощью PowerShell — среда, 19 марта 2014 г.
  • Создание списка локальных администраторов с помощью PowerShell — среда, 5 марта 2014 г.
  • Удаленный запрос информации профиля пользователя с помощью PowerShell – вторник, 26 ноября 2013 г.

Перезапуск службы — довольно распространенная задача системного администрирования. Если службу необходимо перезапустить на локальном компьютере, мы используем Service Manager MMC (services.msc). Мы используем ту же MMC, когда требуется перезапуск службы на удаленном компьютере. Однако если вы хотите перезапустить одну и ту же службу на нескольких компьютерах, встроенного инструмента нет. Здесь вам поможет код PowerShell, о котором я собираюсь рассказать.

PowerShell — это простой способ перезапустить службу на удаленном компьютере. Хотя существует несколько способов перезапустить службу с помощью PowerShell, я предпочитаю командлет Restart-Service. Сценарий, о котором я собираюсь рассказать, представляет собой оболочку этого командлета для получения необходимых нам функций.

Этот скрипт принимает три аргумента:

  • ComputerName: здесь вы можете указать список компьютеров, на которых нужно перезапустить службу. Это необязательный параметр. Если вы его не используете, сценарий запускается на локальном компьютере.
  • ServiceName: имя службы, которую вы хотите перезапустить на удаленных компьютерах. Это обязательное свойство.
  • OutputDir: имя каталога, в котором вы хотите хранить выходные файлы failedcomputers.txt и successcomputers.txt, содержащие состояние перезапуска службы.

Возможно, вы знаете, что командлет Get-Service можно использовать для запроса удаленных служб. Лишь немногие знают, что командлеты Start-Service, Stop-Service и Restart-Service можно использовать для выполнения соответствующих операций на удаленных компьютерах, даже если они не имеют параметра –ComputerName. Процедура очень проста. Вместо параметра –ComputerName нам нужно использовать параметр –InputObject для этих командлетов для остановки/запуска/перезапуска служб. Значение для –InputObject можно получить с помощью Get-Service. См. приведенный ниже код для большей ясности.

Командлет Get-Service с параметром –ComputerName вернет ссылку Object на запрашиваемую службу. Мы можем ввести этот объект в Start-Service, Stop-Service или Restart-Service для выполнения соответствующих действий. Дополнительный параметр –ComputerName не нужен, как показано в приведенном выше коде. Это основная часть сценария. Все остальное является оберткой поверх него.

Я также использовал командлет Test-Connection в сценарии, чтобы проверить, доступен ли компьютер перед запросом служб. Я создаю собственный PsObject для хранения результатов вывода, которые будут отображаться на экране и фильтроваться в конце сценария, чтобы сохранить детали в файлах failedComputers.txt и SuccessComputers.txt. По умолчанию эти выходные файлы создаются в каталоге c:\. Если вы хотите изменить расположение, используйте параметр –OutputDir при запуске скрипта.

Примеры перезапуска службы с помощью сценария PowerShell ^

Перезапустите службу на локальном компьютере:

Перезапустите службу на удаленном компьютере:

Перезапустите службу на Comp1 и Comp2:

Взять список серверов из текстового файла и перезапустить на них службу:

Это вывод приведенной выше команды:

PowerShell — перезапуск удаленной службы

В целях безопасности попробуйте сценарий в лабораторной среде, прежде чем запускать его в рабочей среде. Надеюсь, этот скрипт поможет. Скрипт предоставляется как есть, без каких-либо гарантий!

Как использовать сценарий PowerShell для перезапуска службы на удаленном сервере?

Кроме того, мне нужно будет использовать имя пользователя и пароль администратора.

Мне не нужно останавливать\запускать, я хочу просто перезапустить.

Популярные темы в PowerShell

18 ответов

Точно

  • отметить 1209 лучших ответов
  • thumb_up 2696 благодарностей

TecDragon написал:

Как мне использовать сценарий PowerShell для перезапуска службы на удаленном сервере?

Кроме того, мне нужно будет использовать имя пользователя-администратора и пароль.

Мне не нужно останавливать\запускать, я хочу просто перезапустить.

Что вы пробовали? где ты застрял?

Возможно, вы захотите изучить "invoke-command" и "restart-service"?

Не стесняйтесь попробовать и опубликовать код, если вы застряли

Если вы отправляете код, используйте кнопку "Вставить код". Пожалуйста и спасибо!

Адам (Эй Джей Тек)

Представитель бренда AJ Tek

Но не показано, как добавить учетные данные. Мои познания в powershell ограничены. По сути, я просто копаюсь в нем, пытаясь найти его, так как мне нужно удаленно перезапустить службу.

В Adam (AJ Tek) это близко, но он запрашивает мой пароль, когда я запускаю его, в любом случае, чтобы встроить в него мой пароль?

И спасибо, что не сказали RTFM.

Точно

  • отметить 1209 лучших ответов
  • thumb_up 2696 благодарностей

TecDragon написал:

У Адама (AJ Tek) это близко, но он запрашивает мой пароль, когда я запускаю его, в любом случае, чтобы встроить в него мой пароль?

< p>И спасибо, что не сказали RTFM.

Точно

  • отметить 1209 лучших ответов
  • thumb_up 2696 благодарностей

TecDragon написал:

И спасибо, что не сказали RTFM.

Ну, мы здесь, чтобы помочь, а не сервис по написанию сценариев, поэтому, если вы покажете нам, что вы пробовали и где вы застряли, мы будем рады помочь, но обычно не так рады делать это полностью для ты ;¬)

Горфмастер1

  • отметить 23 лучших ответа
  • thumb_up: 85 благодарностей

Вы также можете сделать это следующим образом:

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

Точно

  • отметить 1209 лучших ответов
  • thumb_up 2696 благодарностей

Gorfmaster1 написал:

Вы также можете сделать это следующим образом:

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

Да, но 'invoke-command' также требует winrm / psremoting.

Извините, но я заглушил этого парня — я бы не просил здесь о помощи, если бы знал, как это сделать, мне, очевидно, нужен кто-то со знаниями, чтобы показать мне, как это сделать.

Я экспериментировал с этой страницей

Точно

  • отметить 1209 лучших ответов
  • thumb_up 2696 благодарностей

TecDragon написал:

Извините, но я заглушил этого парня — я бы не просил здесь о помощи, если бы знал, как это сделать

Похоже, я все время забываю, что указание на документацию и статью с инструкциями — это не то же самое, что помощь.

TecDragon написал:

Я работаю над тем, как добавить имя пользователя и пароль. Если разберусь, поделюсь

одна из бесполезных ссылок и ссылок RTFM, которые я разместил, показывает, как именно это сделать.

Опять же, учетные данные в скрипте — ПЛОХАЯ практика.

Похоже, вам не нужны советы, но вам нужна бесплатная услуга по написанию сценариев.

Извините, не извините.

Я нашел это, похоже, оно работает, но мне приходится останавливаться, а затем запускать службу, кажется, нет перезапуска.

тробертс2

Вы также пробовали что-то вроде PSTools . пссервис \\сервер .

Если вы раньше не пользовались ни одним из них, я бы серьезно подумал о том, чтобы загрузить и установить все инструменты, а затем вы сможете вызывать их через CMD или вызывать через скрипты с PowerShell и т. д.

Часть моего инструмента KATWORX извлекает или связывает PSTools с различными командами Powershell и cmdline для отправки, извлечения данных, сброса служб и многого другого.

Джим6795

Поскольку вы, кажется, не хотите иметь внешний файл учетных данных, следующий раздел этой ссылки может быть как раз тем дроидом, которого вы ищете:

И когда я создал свой сценарий "остановить (или запустить) удаленную службу", я обнаружил, что "Перезапуск" отсутствует. Я просто связываю Stop и Start вместе (или устанавливаю его как псевдоним в вашем профиле), и это работает нормально.

Джим6795

Просто чтобы доказать, что мы все постоянно учимся, получая ответы на вопросы, я обнаружил, что это работает как строка "Перезапустить":

Таким образом, вы можете просто создать псевдоним команды следующим образом:

Я хочу подойти к этому с другой точки зрения TecDragon

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

По моему мнению, единственная причина, по которой вы захотите сделать это удаленно, вне сервера с проблемной службой, – это интерактивное устранение неполадок. ИЛИ, если вы делаете это на нескольких серверах одновременно.

Сообщите мне, если вам нужна непосредственная помощь Powershell, как это сделать. Мне нравится помогать, потому что я чувствую, что возможность научить кого-то чему-то свидетельствует о глубоком знании темы, и я всегда готов отточить свои навыки.

Точно

  • отметить 1209 лучших ответов
  • thumb_up 2696 благодарностей

troberts2 написал:

Вы тоже пробовали что-то вроде PSTools. пссервис \\сервер .

Если вы раньше не пользовались ни одним из них, я бы серьезно подумал о том, чтобы загрузить и установить все инструменты, а затем вы сможете вызывать их через CMD или вызывать через скрипты с PowerShell и т. д.

Часть моего инструмента KATWORX извлекает или связывает PSTools с различными командами Powershell и cmdline для отправки, извлечения данных, сброса служб и многого другого.

Я просто хочу отметить, что эти «инструменты ps» не относятся к powershell, для инструментов Марка ps означает «процесс»

тробертс2

Да, Neally, НО вы можете использовать Powershell для вызова одной из этих команд PS Tools, если они у вас установлены (бесплатно и просто, я помещаю свою в c:\Windows\. затем добавляю псевдоним к местоположению, чтобы я мог ввести psservice и знает, откуда вызывать EXE) и . psservice имеет возможность перезапуститься, поэтому, если вы просто наберете:

psservice [\\computer [-u имя пользователя] [-p пароль]] перезапустить службу. намного проще

<р>. он сделает то, что им нужно. с помощью powershell вы можете создать функцию, которая запросит у вас имя ПК, и, если это обычное имя службы, вы также можете использовать псевдоним и указать, какая служба, чтобы вы могли просто автоматизировать весь процесс без необходимости вводить больше, чем возможно, имя ПК и имя службы или выберите из списка, затем он перезагрузит эту конкретную службу на этом удаленном ПК/сервере.

Если у вас есть доступ, вы также можете использовать psexec . так как вы можете использовать что-то вроде следующего:

psexec \\computer cmd.exe для получения доступа к удаленным серверам cmd . если вам нужно перезапустить wsus, вы можете использовать обычную команду net stop wuauserv, а затем снова начать с net start wuauserv через минуту.

Если вы хотите использовать все возможности powershell, просто откройте сеанс PSSession . (информация о сеансе PS)

New-PSSession -ComputerName servername.domain -Credential domain\username . нажмите Enter, должен запросить пароль, затем, если это служба для перезагрузки:

Нажмите Enter и готово. Удалите PSSession почти таким же образом. Remove-PSSession -ComputerName servername.domain

Комбинируя PS Tools или просто Powershell, вы можете сделать одно и то же несколькими способами.

Перезапуск службы — довольно распространенная задача для любых системных администраторов, будь то в локальной системе или на удаленном компьютере. Теперь давайте рассмотрим несколько способов запуска, остановки и перезапуска службы на удаленном компьютере.

Как получить название службы

Прежде чем мы углубимся в способы управления удаленной службой, давайте сначала проверим, как получить правильное имя службы, потому что оно будет использоваться любой командой или командлетом PowerShell, перечисленными ниже.

Одна вещь, на которую стоит обратить внимание, это то, что имена, перечисленные в столбце «Имя» в MMC «Службы», не являются именами служб, используемыми в командных строках ниже. Это просто отображаемое имя службы. Вам нужно будет открыть диалоговое окно свойств службы, чтобы узнать это.

Это встроенная командная строка, начиная с Windows XP. Он довольно легко взаимодействует с локальными и удаленными службами следующим образом:

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

Если вы знаете название службы, которую хотите интерактивировать, SC вполне подойдет. Однако он плохо работает с теми службами, на которые можно положиться зависимыми службами.

Обратите внимание, что у SC нет возможности перезапустить службу.Поэтому, если вам нужно перезапустить удаленную службу, вам нужно будет выполнить STOP и START отдельно.

Кстати, вы можете использовать SC, чтобы получить название службы, как показано ниже:

PSService от Sysinternals

Если вы являетесь поклонником Windows Sysinternals, вы можете использовать PSService.exe, который работает аналогично SC и выполняет свою работу. В нем есть переключатель, который может перезапустить службу.

Но он по-прежнему плохо справляется со службой с зависимостями.

PowerShell

Существует несколько способов работы со службами с помощью PowerShell. Но следующие сценарии кажутся мне самыми простыми способами.

Здесь параметр -Force предназначен для работы со службой с зависимостями.

По сути, командлет Get-Service с параметром -ComputerName возвращает ссылку на объект службы в вопросе. Затем передайте результат в Start-Service, Stop-Service или Restart-Service для выполнения соответствующих действий.

Вы также можете добавить в сценарий командлет Test-Connection, чтобы проверить удаленное подключение перед запросом службы.

Менеджер служб MMC

И, конечно же, мы всегда можем использовать встроенную консоль MMC Service Manager (services.msc) для выполнения этой работы. Чтобы подключиться к MMC удаленных служб, щелкните имя службы на левой панели, выберите «Действие», затем «Подключиться к другому компьютеру»…

После подключения вы можете управлять службами так же, как и в локальной системе.

Совершенно очевидно, что домашние компьютеры в наши дни очень распространены, и нет ничего необычного в том, что в домашнем хозяйстве можно найти более одного ПК или ноутбука с Windows. Возможно, у родителей есть настольный ПК, а дети используют ноутбук, или у вас есть настольные компьютеры, объединенные в сеть в вашем офисе для работы. С увеличением количества компьютеров, находящихся в вашем распоряжении, возрастает необходимость заботиться о них, когда у них возникают проблемы, требуется настройка или они работают не так эффективно, как должны.

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

Здесь мы покажем вам несколько способов просмотра состояния служб Windows на удаленном компьютере, а также возможность запускать и останавливать их, не покидая собственного компьютера.

<р>1. Еще один (удаленный) монитор процесса

Эта программа не обновлялась с 2009 года, но YAPM — один из немногих инструментов, которые действительно позволяют управлять удаленными службами, не выходя из графического интерфейса. Мы уже говорили об этой программе из-за возможностей удаленного управления процессами, но она также позволяет управлять службами дома.

YAPM позволяет просматривать службы и их сведения на удаленном компьютере. Он предлагает управление запуском, остановкой или изменением типа запуска. Есть два способа удаленного подключения к другому компьютеру; либо через более простой интерфейс WMI, либо запустив серверный процесс YAPM на удаленной машине (в наши дни этот вариант работает не слишком хорошо).

Для простоты использования мы покажем параметр WMI. Запустите YAPM и нажмите круглую кнопку «Параметры» в левом верхнем углу окна, выберите в меню «Изменить тип подключения». Откроется окно подключений, нажмите «Удаленный через WMI», затем «Отключить», а затем введите имя или IP-адрес удаленного компьютера вместе с именем пользователя и паролем удаленного администратора. Наконец, нажмите «Подключиться», а затем «Скрыть окно».

<р>2. Сервер доступа к приложениям (A-A-S)

A-A-S – это старый инструмент, который на самом деле может похвастаться несколькими мощными функциями. К сожалению, его сложно использовать, а официальная документация не очень полезна. Благодаря возможности запускать приложения Windows и включать/отключать службы удаленно через Интернет, а также по локальной сети, A-A-S имеет хороший потенциал для использования.Возможным недостатком является то, что его необходимо настраивать и полностью запускать на удаленном компьютере.

Чтобы быстро приступить к работе, вам не нужно много настраивать. Сначала запустите программу и нажмите «Настроить»> «Пользователь», выделите пользователя admin в списке и нажмите «Изменить». Замените пароль и, при желании, имя пользователя, нажмите «ОК». Вы также можете изменить порт с 6262 по умолчанию на что-то вроде 80, что позволит обойти ограничения портов брандмауэра. Нажмите Start, чтобы запустить веб-сервер.

Теперь перейдите к компьютеру в сети, с которой вы хотите подключиться, и откройте веб-браузер. Введите IP-адрес компьютера с A-A-S в адресной строке и добавьте номер порта (нет необходимости, если вы используете порт 80), чтобы это выглядело примерно так:

Затем вам будет предложено ввести имя пользователя и пароль пользователя, отредактированного выше. В веб-интерфейсе выберите опцию «Сервисы» слева. В окне отобразятся службы на удаленном компьютере вместе с их текущим статусом. Обратите внимание, что A-A-S не может отличить отключенную службу от просто остановленной. По этой причине, когда вы нажимаете «Запустить удаленную службу», она может фактически не запускаться, поскольку ее состояние запуска установлено на «Отключено».

Службы с типами запуска "Вручную" или "Автоматически" будут принимать запросы на запуск/остановку, но приостановка, скорее всего, не будет выполнена. A-A-S предлагает дополнительные меры безопасности, такие как порты Silent или Stealth. Для Silent требуется ключевое слово, добавляемое к IP-адресу и порту, в то время как Stealthed использует отдельный инструмент AAS_Login.exe. Службы также можно запускать и останавливать с помощью инструментов командной строки, таких как Net или SC, это можно сделать в окне конфигурации приложения.

<р>3. Управление удаленными службами через командную строку

Встроенная в Windows команда SC представляет собой консольную версию оснастки Services MMC. У нее есть проблема, поскольку нет возможности войти в систему как другой пользователь на удаленном компьютере. К счастью, комбинируя SC с командой NET USE, мы можем подключиться к удаленному компьютеру, а затем выполнять сервисные задачи. Откройте командную строку администратора (Пуск > введите cmd > Ctrl+Shift+Enter), а затем введите следующее:

Net Use \\computername password /User:username

Запросить, запущена служба или остановлена:

SC \\computername Имя службы запроса

Запросить тип запуска службы, путь, отображаемое имя, зависимости и т. д.:

Запустить или остановить службу:

SC \\computername Start|Stop имя_службы

Изменить тип запуска службы:

SC \\computername Config servicename start= Auto|Demand|Disabled

Примечание. Пробел после «start=» важен и его нельзя опускать!

Если вы хотите разорвать соединение с удаленным компьютером, либо перезагрузите компьютер, либо запустите «Net Use \\computername /Delete».

<р>4. Sysinternals PsService (часть PsTools)

Компания Sysinternals, принадлежащая разработчику Microsoft, предлагает набор утилит командной строки для локального и удаленного администрирования под названием PsTools. Одним из включенных инструментов является PsService, специально предназначенный для работы с удаленными службами. Преимущество этого инструмента перед SC заключается в возможности указать имя пользователя и пароль пользователя на удаленном компьютере, поэтому команда NET не требуется. Синтаксис:

Параметры команды Psservice \\computername -u username -p password

Поскольку PsService предоставляет учетные данные пользователя в качестве аргументов, вам не нужно включать команду Net Use. Основные команды в целом такие же, как у утилиты Windows SC, такие как запрос, настройка, запуск, остановка и т. д. Вот несколько примеров работы со службой поиска Windows:

Запросить службу:

Psservice \\computername -u admin -p передать запрос wsearch

Запрос начальной конфигурации службы:

Psservice \\computername -u admin -p pass Config wsearch

Запустить или остановить службу:

Psservice \\computername -u admin -p pass Пуск|Остановить поиск

Установите тип запуска службы:

Psservice \\computername -u admin -p pass Setconfig wsearch Auto|Disabled|Запрос

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

<р>5. Службы/Консоль управления компьютером

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

a) Нажмите клавишу Windows и введите «services», чтобы открыть апплет «Службы» панели управления. Либо введите Services.msc в диалоговом окне «Выполнить» Win+R. Перейдите в меню «Действие» > «Подключиться к другому компьютеру».

b) Нажмите кнопку Обзор и введите имя удаленного компьютера в поле имени объекта. Нажмите OK, и вам будет предложено ввести имя пользователя и пароль учетной записи на удаленном компьютере.

Если вы не можете вспомнить имя удаленного компьютера, нажмите «Обзор» > «Дополнительно» > «Найти сейчас». Это покажет список компьютеров в локальной рабочей группе, где вы можете найти компьютер, к которому хотите подключиться. Нажмите OK, чтобы вернуться в главное окно.

c) Окно «Службы» теперь должно иметь имя удаленного компьютера в дереве консоли, а не «Локальный». Оттуда все, что вам нужно сделать, это развернуть «Службы и приложения» и перейти к Службам.

Апплет Панели управления удаленными службами работает со службами точно так же, как если бы вы управляли службами на локальном компьютере.

Поиск имен служб Windows

В Windows есть несколько имен для каждой службы; имя службы и ее отображаемое имя. Например, «Центр обновления Windows» — это отображаемое имя службы обновления Windows, а Wuauserv — имя службы.

Проще всего использовать эти инструменты с более коротким именем службы. Если вы не уверены, вы можете найти имена служб на своем компьютере, откройте диспетчер задач и перейдите на вкладку «Службы», в столбце «Имя» указано имя. вам нужно использовать.

Читайте также: