I have a Python web application running in a CherryPy server, which is running as a windows service. I have a batch file to deploy this application, but I'm still having to remote desktop in to the server to restart the service. Is there any way to script this?

I tried:

psexec \\server "net restart cherrypyservice"

But this doesn't seem to work.

  • there is no "net restart" command.. you would have to do a "net stop" and then a "net start" if you wanted to use psexec and the built-in net command or use the psservice that is also part of sysinternals suite that others have already mentioned below
    – Rex
    Aug 25 '10 at 14:41

you could use the sc command-line tool but i don't know how to do it specifically in python.


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

  The option  has the form "\\ServerName"
  Further help on commands can be obtained by typing: "sc [command]"
    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 (persistant).
    description-----Changes the description of a service.
    failure---------Changes the actions taken by a service upon failure.
    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.
    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.
    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:
    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

  • You would need run both STOP, then START to get your RESTART effect. Apr 30 '09 at 12:23
  • I'm not doing this in Python anyway, so this works perfectly. I'll test it out when I get to work! Apr 30 '09 at 12:26

Using Russinovich's psservice:

 psservice \\server restart cherrypyservice

If you want to use psexec:

psexec \\Server cmd "/c net stop servicename"
psexec \\Server cmd "/c net start servicename"

Though in this case, sc is recommended. It does everything you need if you're going to shell out.



psexec \\server net stop cherrypyservice
psexec \\server net start cherrypyservice
net stop cherrypyservice
net start cherrypyservice

with whatever remote execution engine you prefer.


Using PowerShell Interactively (localy):

get-service $servicename  | restart-service

Using PowerShell Interactively (remotely):

(gwmi win32_service -computer $comp -Filter "name='$serviceName'").StopService()
(gwmi win32_service -computer $comp -Filter "name='$serviceName'").StartService()

In a function (remotely):

function restart-remoteservice{
     (gwmi win32_service -computer $computer -Filter "name='$serviceName'").StopService()
     (gwmi win32_service -computer $computer -Filter "name='$serviceName'").StartService()

Using the WMI method

(Get-WmiObject win32_service -computer stp7cor1737ltv4 -filter "Name='SPtimerv3'").invokemethod("StartService",$null)


(gwmi win32_service -computer $comp -Filter "name='$serviceName'").StopService() (gwmi win32_service -computer $comp -Filter "name='$serviceName'").StartService()


Using the above command, is there a way where I can restart a service and its dependencies. How do I force it to do so, Is there a force command?

I know there is -f in psservice but I cannot figure it out here

psservice \\server restart cherrypyservice

(Where psservice is another SysInternals app)


sc \\server stop cherrypyservice
sc \\server start cherrypyservice

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.