129

Is there a way to restart a Windows service from the command prompt?

Joe
  • 1,301

6 Answers6

139

You can use net stop [service name] to stop it and net start [service name] to start it up again basically restarting the service.

To combine them just do this - net stop [service name] && net start [service name].


There is also a command built specifically for messing with services: sc

DESCRIPTION:
        SC is a command line program used for communicating with the
        Service Control Manager and services.
USAGE:
        sc  [command] [service name]  ...


        The option  has the form "\\ServerName"
        Further help on commands can be obtained by typing: "sc [command]"
        Commands:
          query-----------Queries the status for a service, or
                          enumerates the status for types of services.
          queryex---------Queries the extended status for a service, or
                          enumerates the status for types of services.
          start-----------Starts a service.
          pause-----------Sends a PAUSE control request to a service.
          interrogate-----Sends an INTERROGATE control request to a service.
          continue--------Sends a CONTINUE control request to a service.
          stop------------Sends a STOP request to a service.
          config----------Changes the configuration of a service (persistent).
          description-----Changes the description of a service.
          failure---------Changes the actions taken by a service upon failure.
          failureflag-----Changes the failure actions flag of a service.
          sidtype---------Changes the service SID type of a service.
          privs-----------Changes the required privileges of a service.
          managedaccount--Changes the service to mark the service account
                          password as managed by LSA.
          qc--------------Queries the configuration information for a service.
          qdescription----Queries the description for a service.
          qfailure--------Queries the actions taken by a service upon failure.
          qfailureflag----Queries the failure actions flag of a service.
          qsidtype--------Queries the service SID type of a service.
          qprivs----------Queries the required privileges of a service.
          qtriggerinfo----Queries the trigger parameters of a service.
          qpreferrednode--Queries the preferred NUMA node of a service.
          qrunlevel-------Queries the run level of a service.
          qmanagedaccount-Queries whether a services uses an account with a
                          password managed by LSA.
          qprotection-----Queries the process protection level of a service.
          delete----------Deletes a service (from the registry).
          create----------Creates a service. (adds it to the registry).
          control---------Sends a control to a service.
          sdshow----------Displays a service's security descriptor.
          sdset-----------Sets a service's security descriptor.
          showsid---------Displays the service SID string corresponding to an arbitrary name.
          triggerinfo-----Configures the trigger parameters of a service.
          preferrednode---Sets the preferred NUMA node of a service.
          runlevel--------Sets the run level of a service.
          GetDisplayName--Gets the DisplayName for a service.
          GetKeyName------Gets the ServiceKeyName for a service.
          EnumDepend------Enumerates Service Dependencies.

        The following commands don't require a service name:
        sc   
          boot------------(ok | bad) Indicates whether the last boot should
                          be saved as the last-known-good boot configuration
          Lock------------Locks the Service Database
          QueryLock-------Queries the LockStatus for the SCManager Database
EXAMPLE:
        sc start MyService

QUERY and QUERYEX OPTIONS:
        If the query command is followed by a service name, the status
        for that service is returned.  Further options do not apply in
        this case.  If the query command is followed by nothing or one of
        the options listed below, the services are enumerated.
    type=    Type of services to enumerate (driver, service, all)
             (default = service)
    state=   State of services to enumerate (inactive, all)
             (default = active)
    bufsize= The size (in bytes) of the enumeration buffer
             (default = 4096)
    ri=      The resume index number at which to begin the enumeration
             (default = 0)
    group=   Service group to enumerate
             (default = all groups)

SYNTAX EXAMPLES
sc query                - Enumerates status for active services & drivers
sc query eventlog       - Displays status for the eventlog service
sc queryex eventlog     - Displays extended status for the eventlog service
sc query type= driver   - Enumerates only active drivers
sc query type= service  - Enumerates only Win32 services
sc query state= all     - Enumerates all services & drivers
sc query bufsize= 50    - Enumerates with a 50 byte buffer
sc query ri= 14         - Enumerates with resume index = 14
sc queryex group= ""    - Enumerates active services not in a group
sc query type= interact - Enumerates all interactive services
sc query type= driver group= NDIS     - Enumerates all NDIS drivers
paradd0x
  • 9,215
  • 10
    Next question becomes how to look up the proper [service name]. – Iszi Jun 24 '11 at 18:09
  • 6
    Put in net start and it lists all the running services. – paradd0x Jun 24 '11 at 18:10
  • 1
    @ThiagoM - And, how about non-running services? – Iszi Jun 24 '11 at 18:11
  • 3
    @Iszi Well, if he wants to restart a service, it has to be running to be restarted. :) – paradd0x Jun 24 '11 at 18:12
  • 4
    @lszi: run "sc query" from the command line. Look at SERVICE_NAME – jftuga Jun 24 '11 at 18:13
  • 9
    'restart != 'stop' && 'start'. I've got a service that is restarted quite quickly via GUI applet but very slow stop-started via both GUI and CLI. Still looking for CLI way to perform real restart... – Van Jone Mar 12 '14 at 23:00
  • httpd.exe -t && net stop Apache2.4 && net start Apache2.4 – zx1986 Feb 16 '16 at 02:51
  • About "finding the proper [service name]", just right-click the service and chose Properties, and it shows Service name: .... – 244an Jul 31 '20 at 20:34
  • 1
    Is the && syntax synchronous (will wait until stopped before running start)? – tbone Nov 25 '20 at 00:45
  • @tbone I think in case of doubts, you can execute the stop first then wait like a few seconds then start the service. A simple way to wait is to use the ping command, example: ping -n 3 127.0.0.1 > nul. This will wait 3 seconds before starting it. – Amr Jan 09 '24 at 05:25
  • @VanJone : I know your comment is old, but I wanted to comment on it. I suspect the standard way is to stop and start as noted elsewhere, but the GUI applet might know a faster program-specific way since the GUI applet is program-specific. If so, then the advice of using stop && start is the correct standardized way that would work with more programs. (Also, the GUI applet, and/or other components of the program, might or might not have a sensibly easy way to restart quickly with another method. If not, using something like AutoHotKey might work, although many would frown upon doing that.) – TOOGAM Jan 29 '24 at 21:07
  • @TOOGAM: Yeah... what a time was when I lived on Windows... These days (months / years) my primary OS is Linux and this change has automatically solved that problem of year 2014, as Linux services have native 'restart' standard command in CLI. :-D – Van Jone Jan 30 '24 at 09:52
62

Please, note that if there are other services that depends on this service - usual net stop & net start will not restart them. net stop /y will stop all dependencies

Most common example - SQL Server & SQL Agent.

I do recommend PowerShell cmdlet to solve this:

powershell -command "Restart-Service MSSQLSERVER -Force"

After MSSQLSERVER starts - cmdlet starts all previously stopped dependancies.

PS: Make sure you are running command as admin

  • 6
    +1. This is the best answer. Stopping and starting services with dependencies will fail with the other answers. You need to add that for this to work you need to run as an admin. – egur Feb 18 '18 at 07:36
  • It helped me, thanks, the dependent doesn't restart automatically. I restarted Windows Management Instrumentation (Winmgmt) which has a dependent Security Center (wscsvc). I had to use -Force as you described, but then start wscsvc manually: powershell -command "Restart-Service Winmgmt -Force; Restart-Service wscsvc". And it's ok with Restart even if it's stopped. – 244an Jul 31 '20 at 20:29
  • If you're running from somewhere aside from a currently loaded powershell session there is overhead and a delay from loading powershell itself. In my case I'm here currently searching for something that doesn't require powershell specifically to avoid the overhead of powershell. – Nate Jan 20 '24 at 00:47
15

To restart a Windows service from the command prompt or scheduled tasks, use this:

cmd /c "net stop "Service Name" & sc start "Service Name""
Kiki
  • 151
  • 8
    You would probably want a double ampersand. That makes it wait for the first command to finish (successfully) before proceeding with the second. – Adam Plocher Jan 26 '18 at 10:48
10

You could also use PowerShell:

stop-Service
Gareth
  • 18,809
devlife
  • 241
6

To solve the annoying Wacom Intuous Driver not running Error I get on every reboot.

Windows key + R, paste, Bam!

sc stop WTabletServicePro && sc start WTabletServicePro
Simon E.
  • 4,057
George
  • 61
  • Exactly what I looking for ! Today is 2023 and the horrible issue still persists. Here is another solution https://www.youtube.com/watch?v=rk_sZGzK-RI (from 2015) – karpi Feb 26 '23 at 17:24
  • Today is 2024, and this command has the first sc call "stop" immediately exiting and then the "start" runs milliseconds later against a still running ("stop pending") service. Therefore the start fails, and your service does not start up. All that is if it's running, for the "stop" one to stop it. If you run this while it's stopped, then the first command fails, and the && logic doesn't run the start ( stop "and" start == stop, and if no error, start). So this doesn't work. Maybe it once did on previous versions. – Nate Jan 20 '24 at 01:05
  • Whereas sc stop and sc start both have sc.exe exiting immediately, net stop and net start are blocking ... they wait until the service is stopped or started before net.exe exits. so the timing issue would not apply here. Still, running it against the case of a stopped service still fails to start it, because the stop attempt fails, therefore everything after the && is ignored. Adding an OR after, to handle that case, will always result in the service running. sc stop MyService && sc start MyService || sc start MyService – Nate Jan 20 '24 at 01:13
3

The PsService utility from PsTools provides a restart command for services, with additional parameters to run it on another machine.

psservice [-accepteula] [\\Computer [-u Username [-p Password]]] restart <service-name>

The -accepteula flag saves you the EULA window just in case it's the first time you use this utility with the current user.

cdlvcdlv
  • 1,531