Como posso reiniciar um serviço do Windows remotamente usando um script?

7

Eu tenho um aplicativo da web em Python em execução em um servidor CherryPy, que está sendo executado como um serviço do Windows. Eu tenho um arquivo em lotes para implantar este aplicativo, mas eu ainda estou tendo a área de trabalho remota para o servidor para reiniciar o serviço. Existe alguma maneira de roteirizar isso?

Eu tentei:

psexec \server "net restart cherrypyservice"

Mas isso não parece funcionar.

    
por Jason Baker 30.04.2009 / 14:12

9 respostas

9

você poderia usar a ferramenta de linha de comando sc, mas não sei como fazê-lo especificamente em python.

link

DESCRIÇÃO:           SC é um programa de linha de comando usado para comunicação com o           NT Service Controller e serviços.   USO:       sc [comando] [nome do serviço] ...

  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

EXEMPLO:           sc start MyService

    
por 30.04.2009 / 14:18
7

Usando o psservice de Russinovich:

 psservice \server restart cherrypyservice
    
por 01.05.2009 / 09:12
3

Se você quiser usar o psexec:

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

Embora neste caso, sc seja recomendado. Ele faz tudo o que você precisa se for desembolsar.

    
por 01.05.2009 / 06:50
2

tente

psexec \server net stop cherrypyservice
psexec \server net start cherrypyservice
    
por 30.04.2009 / 14:18
2
net stop cherrypyservice
net start cherrypyservice

com qualquer mecanismo de execução remota que você preferir.

    
por 30.04.2009 / 14:20
0

Uso do PowerShell interativamente (localmente):

get-service $servicename  | restart-service

Uso do PowerShell interativamente (remotamente):

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

Em uma função (remotamente):

function restart-remoteservice{
     param($servicename,$computer)
     (gwmi win32_service -computer $computer -Filter "name='$serviceName'").StopService()
     (gwmi win32_service -computer $computer -Filter "name='$serviceName'").StartService()
}
    
por 01.05.2009 / 05:17
0

Usando o método WMI

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

    
por 07.12.2009 / 16:08
0

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

Olá

Usando o comando acima, existe uma maneira pela qual eu posso reiniciar um serviço e suas dependências. Como faço para forçar isso, existe um comando de força?

Eu sei que existe -f no psservice mas não consigo descobrir aqui

    
por 10.08.2010 / 11:51
0
psservice \server restart cherrypyservice

(onde psservice é outro aplicativo SysInternals)

ou

sc \server stop cherrypyservice
sc \server start cherrypyservice
    
por 25.08.2010 / 14:51