it-swarm-es.com

¿Cómo puedo reiniciar un servicio de Windows de forma remota usando un script?

Tengo una aplicación web Python ejecutándose en un servidor CherryPy, que se ejecuta como un servicio de Windows. Tengo un archivo por lotes para implementar esta aplicación, pero todavía tengo que acceder al escritorio remoto para el servidor para reiniciar el servicio. ¿Hay alguna forma de escribir esto?

Lo intenté:

psexec \\server "net restart cherrypyservice"

Pero esto no parece funcionar.

7
Jason Baker

podría usar la herramienta de línea de comandos sc pero no sé cómo hacerlo específicamente en Python.

https://stackoverflow.com/questions/133883/stop-and-start-a-service-via-batch-or-cmd-file/133926#133926

DESCRIPCIÓN: SC es un programa de línea de comandos que se utiliza para comunicarse con el controlador de servicio de NT y los servicios. USO: sc [comando] [nombre del servicio] ...

  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 (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:
  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

EJEMPLO: sc start MyService

9
Keng

Usando psservice de Russinovich:

 psservice \\server restart cherrypyservice
7
gabr

Si desea utilizar psexec:

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

Aunque en este caso se recomienda sc. Hace todo lo que necesita si va a utilizar Shell.

3
K. Brian Kelley

tratar

psexec \\server net stop cherrypyservice
psexec \\server net start cherrypyservice
2
Richard Slater
net stop cherrypyservice
net start cherrypyservice

con el motor de ejecución remota que prefiera.

2
Richard Gadsden

Uso de PowerShell de forma interactiva (localmente):

get-service $servicename  | restart-service

Uso de PowerShell de forma interactiva (de forma remota):

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

En una función (de forma remota):

function restart-remoteservice{
     param($servicename,$computer)
     (gwmi win32_service -computer $computer -Filter "name='$serviceName'").StopService()
     (gwmi win32_service -computer $computer -Filter "name='$serviceName'").StartService()
}
0
James Pogran

Usando el método WMI

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

0
Joshua

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

Hola

Usando el comando anterior, ¿hay alguna manera de reiniciar un servicio y sus dependencias? ¿Cómo lo obligo a hacerlo? ¿Hay un comando de fuerza?

Sé que hay -f en psservice pero no puedo resolverlo aquí

0
Mladen
psservice \\server restart cherrypyservice

(Donde psservice es otra aplicación de SysInternals)

o

sc \\server stop cherrypyservice
sc \\server start cherrypyservice
0
gWaldo