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

Sometimes while debugging, I need to restart a service on a remote machine. Currently, I’m doing this via Remote Desktop. How can it be done from the command line on my local machine?

asked Oct 9, 2008 at 15:32

Josh Kodroff's user avatar

Josh KodroffJosh Kodroff

27.4k27 gold badges95 silver badges148 bronze badges

1

You can use the services console, clicking on the left hand side and then selecting the «Connect to another computer» option in the Action menu.

If you wish to use the command line only, you can use

sc \\machine stop <service>

answered Oct 9, 2008 at 15:36

Vinko Vrsalovic's user avatar

Vinko VrsalovicVinko Vrsalovic

332k53 gold badges335 silver badges374 bronze badges

9

You can use mmc:

  1. Start / Run. Type «mmc».
  2. File / Add/Remove Snap-in… Click «Add…»
  3. Find «Services» and click «Add»
  4. Select «Another computer:» and type the host name / IP address of the remote machine. Click Finish, Close, etc.

At that point you will be able to manage services as if they were on your local machine.

answered Oct 9, 2008 at 15:39

Ryan Duffield's user avatar

Ryan DuffieldRyan Duffield

18.5k6 gold badges40 silver badges40 bronze badges

3

You can use System Internals PSEXEC command to remotely execute a net stop yourservice, then net start yourservice

answered Oct 9, 2008 at 15:39

Philibert Perusse's user avatar

1

Using command line, you can do this:

AT \\computername time "NET STOP servicename"
AT \\computername time "NET START servicename"

answered Oct 9, 2008 at 15:52

Andrew Moore's user avatar

Andrew MooreAndrew Moore

93.7k30 gold badges164 silver badges175 bronze badges

1

I would suggest you to have a look at RSHD

You do not need to bother for a client, Windows has it by default.

answered Oct 9, 2008 at 15:39

tafa's user avatar

Well, if you have Visual Studio (I know it’s in 2005, not sure about earlier versions though), you can add the remote machine to your «Server Explorer» tag. At that point, you’ll have access to the SERVICES that are running, or can be ran, from that machine (as well as event logs, and queues, and a couple other interesting things).

answered Oct 9, 2008 at 15:37

Stephen Wrighton's user avatar

Stephen WrightonStephen Wrighton

36.9k6 gold badges68 silver badges86 bronze badges

1

One way would be to enable telnet server on the machin you want to control services on (add/remove windows components)

Open dos prompt
Type telnet yourmachineip/name
Log on
type net start &serviceName* e.g. w3svc

This will start IIS or you can use net stop to stop a service.

Depending on your setup you need to look at a way of securing the telnet connection as I think its unencrypted.

answered Oct 9, 2008 at 15:37

alexmac's user avatar

alexmacalexmac

4,1833 gold badges30 silver badges32 bronze badges

1

Several good solutions here. If you’re still on Win2K and can’t install anything on the remote computer, this also works:

Open the Computer Management Console (right click My Computer, choose Manage; open from Administrative Tools in the Start Menu; or open from the MMC using the snap-in).

Right click on your computer name and choose «Connect to Remote Computer»

Put in the computer name and credentials and you have full access to many admin functions including the services control panel.

answered Oct 9, 2008 at 18:32

Sometimes while debugging, I need to restart a service on a remote machine. Currently, I’m doing this via Remote Desktop. How can it be done from the command line on my local machine?

asked Oct 9, 2008 at 15:32

Josh Kodroff's user avatar

Josh KodroffJosh Kodroff

27.4k27 gold badges95 silver badges148 bronze badges

1

You can use the services console, clicking on the left hand side and then selecting the «Connect to another computer» option in the Action menu.

If you wish to use the command line only, you can use

sc \\machine stop <service>

answered Oct 9, 2008 at 15:36

Vinko Vrsalovic's user avatar

Vinko VrsalovicVinko Vrsalovic

332k53 gold badges335 silver badges374 bronze badges

9

You can use mmc:

  1. Start / Run. Type «mmc».
  2. File / Add/Remove Snap-in… Click «Add…»
  3. Find «Services» and click «Add»
  4. Select «Another computer:» and type the host name / IP address of the remote machine. Click Finish, Close, etc.

At that point you will be able to manage services as if they were on your local machine.

answered Oct 9, 2008 at 15:39

Ryan Duffield's user avatar

Ryan DuffieldRyan Duffield

18.5k6 gold badges40 silver badges40 bronze badges

3

You can use System Internals PSEXEC command to remotely execute a net stop yourservice, then net start yourservice

answered Oct 9, 2008 at 15:39

Philibert Perusse's user avatar

1

Using command line, you can do this:

AT \\computername time "NET STOP servicename"
AT \\computername time "NET START servicename"

answered Oct 9, 2008 at 15:52

Andrew Moore's user avatar

Andrew MooreAndrew Moore

93.7k30 gold badges164 silver badges175 bronze badges

1

I would suggest you to have a look at RSHD

You do not need to bother for a client, Windows has it by default.

answered Oct 9, 2008 at 15:39

tafa's user avatar

Well, if you have Visual Studio (I know it’s in 2005, not sure about earlier versions though), you can add the remote machine to your «Server Explorer» tag. At that point, you’ll have access to the SERVICES that are running, or can be ran, from that machine (as well as event logs, and queues, and a couple other interesting things).

answered Oct 9, 2008 at 15:37

Stephen Wrighton's user avatar

Stephen WrightonStephen Wrighton

36.9k6 gold badges68 silver badges86 bronze badges

1

One way would be to enable telnet server on the machin you want to control services on (add/remove windows components)

Open dos prompt
Type telnet yourmachineip/name
Log on
type net start &serviceName* e.g. w3svc

This will start IIS or you can use net stop to stop a service.

Depending on your setup you need to look at a way of securing the telnet connection as I think its unencrypted.

answered Oct 9, 2008 at 15:37

alexmac's user avatar

alexmacalexmac

4,1833 gold badges30 silver badges32 bronze badges

1

Several good solutions here. If you’re still on Win2K and can’t install anything on the remote computer, this also works:

Open the Computer Management Console (right click My Computer, choose Manage; open from Administrative Tools in the Start Menu; or open from the MMC using the snap-in).

Right click on your computer name and choose «Connect to Remote Computer»

Put in the computer name and credentials and you have full access to many admin functions including the services control panel.

answered Oct 9, 2008 at 18:32

Вопрос:

Иногда при отладке мне нужно перезапустить службу на удаленной машине. В настоящее время я делаю это через Remote Desktop. Как это сделать из командной строки на моей локальной машине?

Лучший ответ:

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

Если вы хотите использовать только командную строку, вы можете использовать

sc \\machine stop <service>

Ответ №1

Вы можете использовать mmc:

  • Пуск/Выполнить. Введите “mmc”.
  • Файл/Добавить/удалить оснастку… Нажмите “Добавить…”
  • Найдите “Услуги” и нажмите “Добавить”
  • Выберите “Другой компьютер:” и введите имя хоста/IP-адрес удаленной машины. Нажмите “Готово”, “Закрыть” и т.д.

В этот момент вы сможете управлять услугами, как если бы они были на вашей локальной машине.

Ответ №2

Вы можете использовать System Internals PSEXEC для удаленного выполнения net stop yourservice, затем net start yourservice

Ответ №3

Используя командную строку, вы можете сделать это:

AT \\computername time "NET STOP servicename"
AT \\computername time "NET START servicename"

Ответ №4

Я предлагаю вам взглянуть на RSHD

Вам не нужно беспокоиться о клиенте, Windows по умолчанию.

Ответ №5

Хорошо, если у вас есть Visual Studio (я знаю это в 2005 году, но не уверен в более ранних версиях), вы можете добавить удаленный компьютер в свой тег “Server Explorer”. В этот момент у вас будет доступ к сервисам, которые запущены или могут быть запущены с этого компьютера (а также журналы событий и очереди, а также еще несколько интересных вещей).

Ответ №6

Один из способов – включить telnet-сервер на машине, для которой вы хотите управлять сервисами (добавить/удалить компоненты Windows)

Открыть приглашение dos
Тип telnet yourmachineip/name
Вход в систему
тип net start & serviceName * например. w3svc

Это запустит IIS, или вы можете использовать net stop для остановки службы.

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

Ответ №7

Несколько хороших решений здесь. Если вы все еще на Win2K и не можете установить что-либо на удаленном компьютере, это также работает:

Откройте консоль управления компьютером (щелкните правой кнопкой мыши Мой компьютер, выберите “Управление”, откройте “Администрирование” в меню “Пуск” или откройте MMC с помощью оснастки).

Щелкните правой кнопкой мыши имя компьютера и выберите “Подключиться к удаленному компьютеру”

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

Время на прочтение
8 мин

Количество просмотров 110K


Продолжаем знакомиться с тем, как осуществлять управление службами Windows с использованием PowerShell. В предыдущем посте мы рассмотрели, как получить статус службы на локальном и удаленном компьютере, произвести фильтрацию служб (например, найти только остановленные службы) и определить зависимые службы. В этом посте будут рассмотрены такие достаточно тривиальные вещи, как:

  1. Остановка службы
  2. Запуск службы
  3. Перезапуск службы
  4. Приостановка и возобновление работы
  5. Управление удаленными службами
  6. Настраиваем автозагрузку службы

Мы уделим большее внимание разбору команд в PowerShell для осуществления выше перечисленного на локальном компьютере. В разделе “управление службами удаленных компьютерах” мы рассмотрим, ограничения работы в PowerShell v2 и v3. Подробности под катом.

Предыдущая статья:
Управляем службами Windows с помощью PowerShell. Часть 1. Получаем статус служб

PS C:\> get-service bits
Status Name DisplayName
------ ---- -----------
Running bits Background Intelligent Transfer Ser...

Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.

Взглянем на эти команды внимательнее.

STOP-SERVICE

Чтобы остановить службу, мы должны уточнить ее имя.

PS C:\> stop-service wuauserv

Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.

PS C:\> stop-service bits -PassThru
Status Name DisplayName
------ ---- -----------
Stopped bits Background Intelligent Transfer Ser...

Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).

PS C:\> get-service browser | stop-service -WhatIf
What if: Performing operation “Stop-Service” on Target “Computer Browser (browser)”.

Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.

PS C:\> get-service browser | stop-service

Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:

PS C:\> get-service bits | where {$_.status -eq 'running'} | stop-service -pass
Status Name DisplayName
------ ---- -----------
Stopped bits Background Intelligent Transfer Ser...

Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.

PS C:\> get-service bits,wsearch,winrm,spooler | where {$_.status -eq 'running'} | stop-service -whatif
What if: Performing operation "Stop-Service" on Target "Print Spooler (spooler)".
What if: Performing operation "Stop-Service" on Target "Windows Remote Management (WS-Management) (winrm)".
What if: Performing operation "Stop-Service" on Target "Windows Search (wsearch)".

Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.

В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.

PS C:\> stop-service lanmanserver -force –PassThru
Status Name DisplayName
------ ---- -----------
Stopped Browser Computer Browser
Stopped lanmanserver Server

START-SERVICE

Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.

PS C:\> start-service wuauserv -PassThru
Status Name DisplayName
------ ---- -----------
Running wuauserv Windows Update

И снова: если служба уже запущена, командлет ничего не сделает. Однако вы можете попытаться запустить службу и получите такую ошибку.

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

PS C:\> get-service lanmanserver | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Running Browser Computer Browser

Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.

RESTART-SERVICE

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

PS C:\> restart-service spooler -PassThru
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler

Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.

ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ

Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)

В чем же проблема? Смотрим на объект (используя Get-Service).

PS C:\> get-service bits | select *
Name : bits
RequiredServices : {RpcSs, EventSystem}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
DisplayName : Background Intelligent Transfer Service
DependentServices : {}
MachineName : .
ServiceName : bits
ServicesDependedOn : {RpcSs, EventSystem}
ServiceHandle : SafeServiceHandle
Status : Running
ServiceType : Win32ShareProcess
Site :
Container :

Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:

PS C:\> get-service | where {$_.CanPauseandContinue}
Status Name DisplayName
------ ---- -----------
Running LanmanServer Server
Running LanmanWorkstation Workstation
Running MSSQLSERVER SQL Server (MSSQLSERVER)
Running O2FLASH O2FLASH
Running stisvc Windows Image Acquisition (WIA)
Running Winmgmt Windows Management Instrumentation

Как мы видим, не так много служб удовлетворяют этому требованию.

PS C:\> suspend-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Paused O2FLASH o2flash

Готовы возобновить работу службы? Используйте следующее выражение:

PS C:\> resume-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Running O2FLASH o2flash

Оба командлета также поддерживают –Whatif.

УДАЛЕННЫЕ СЛУЖБЫ

Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.

PS C:\> Invoke-Command {restart-service dns –passthru} –comp chi-dc03,chi-dc02,chi-dc01

Управление службами на удаленных компьютерах не ограничивается вышеперечисленным, но это уже будет предмет рассмотрения последующих статей.
Все эти командлеты могут быть использованы в конвейерном выражении и зачастую это лучший вариант. Использование Get-Service для получения объектов и последующая передача их в подходящий командлет.

УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС

Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.

PS C:\> set-service wuauserv -ComputerName chi-dc03 -Status stopped -WhatIf
What if: Performing operation "Set-Service" on Target "Windows Update (wuauserv)".

Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.

PS C:\> set-service bits -ComputerName chi-dc03 -Status running -PassThru
Status Name DisplayName
------ ---- -----------
Running bits Background Intelligent Transfer Ser...

Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.

К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:

PS C:\> set-service w32time -ComputerName chi-dc03 -Status Stopped -PassThru | set-service -PassThru -Status Running
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time

Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.

УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ

Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).

PS C:\> set-service remoteregistry -StartupType Manual -WhatIf
What if: Performing operation "Set-Service" on Target "Remote Registry (remoteregistry)".
PS C:\> set-service remoteregistry -StartupType Manual -PassThru
Status Name DisplayName
------ ---- -----------
Stopped remoteregistry Remote Registry

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

PS C:\> get-service remoteregistry | select *
Name : remoteregistry
RequiredServices : {RPCSS}
CanPauseAndContinue : False
CanShutdown : False
CanStop : False
DisplayName : Remote Registry
DependentServices : {}
MachineName : .
ServiceName : remoteregistry
ServicesDependedOn : {RPCSS}
ServiceHandle : SafeServiceHandle
Status : Stopped
ServiceType : Win32ShareProcess
Site :
Container :

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

PS C:\> set-service remoteregistry -StartupType Disabled -PassThru
Status Name DisplayName
------ ---- -----------
Running remoteregistry Remote Registry

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

PS C:\> set-service remoteregistry -StartupType Disabled -PassThru | Stop-Service -PassThru
Status Name DisplayName
------ ---- -----------
Stopped remoteregistry Remote Registry

Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.

Upd:
В посте приведены переводы статей с портала 4sysops.com
Managing Services the PowerShell way – Part 3
Managing Services the PowerShell way – Part 4

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

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

Один из самых удобных способов удаленного управления службами – использование командной строки и утилиты SC (Service Control). С помощью данной утилиты можно управлять службами Windows на удаленном компьютере, задавать статус службы и перезапускать её.

Для того, чтобы использовать командную строку и утилиту SC для удаленного управления службами Windows, необходимо выполнить следующие шаги:

1. Открываем командную строку в режиме администратора.
2. Вводим команду “sc \\имя_компьютера query” для получения списка всех активных служб на удаленном компьютере. Здесь “имя_компьютера” означает имя компьютера, на котором необходимо произвести удаленное управление службами.
3. Индексируем нужную нам службу, исправляем ее имя (например wuauserv) и используем следующие команды:

— sc \\имя_компьютера stop служба – остановка службы на удаленном компьютере
— sc \\имя_компьютера start служба – запуск службы на удаленном компьютере
— sc \\имя_компьютера query служба – получить информацию о статусе службы на удаленном компьютере
— sc \\имя_компьютера delete служба – удалить службу на удаленном компьютере
— sc \\имя_компьютера config служба start= delayed-auto – выставляем задержку запуска для нашей службы

4. Если требуется перезапустить службу, необходимо сначала остановить ее командой “sc \\имя_компьютера stop служба”, а затем запустить “sc \\имя_компьютера start служба”.

Вместо использования отдельно введенных команд для управления соответствующими службами, можно использовать пакетный файл (batch-файл), который содержит все необходимые команды. Задаем команды, сохраняем файл с расширением .bat и запускаем его на удаленном компьютере.

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

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

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

  • Как удалить bcd в windows 10
  • Как удалить 360 total security с ноутбука полностью windows 10
  • Как удаленно перезагрузить компьютер через командную строку windows 10
  • Как удалить avast security с компьютера полностью windows 10
  • Как удалить adb драйвера в windows 10