Назад | Перейти на главную страницу

Как я могу перезапустить службу Windows удаленно с помощью сценария?

У меня есть веб-приложение Python, работающее на сервере CherryPy, которое работает как служба Windows. У меня есть командный файл для развертывания этого приложения, но мне все еще нужно подключиться к удаленному рабочему столу на сервере, чтобы перезапустить службу. Есть ли способ написать это по сценарию?

Я попытался:

psexec \\server "net restart cherrypyservice"

Но, похоже, это не работает.

вы можете использовать инструмент командной строки sc, но я не знаю, как это сделать конкретно на Python.

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

ОПИСАНИЕ: SC - это программа командной строки, используемая для связи с NT Service Controller и службами. ИСПОЛЬЗОВАНИЕ: sc [команда] [имя службы] ...

  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

ПРИМЕР: sc start MyService

Используя Руссиновича psservice:

 psservice \\server restart cherrypyservice

Если вы хотите использовать psexec:

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

Хотя в этом случае рекомендуется sc. Он делает все, что вам нужно, если вы собираетесь раскошелиться.

пытаться

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

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

Интерактивное использование PowerShell (локально):

get-service $servicename  | restart-service

Интерактивное (удаленное) использование PowerShell:

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

В функции (удаленно):

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

Использование метода WMI

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

Привет

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

Я знаю, что в psservice есть -f, но я не могу понять это здесь

psservice \\server restart cherrypyservice

(Где psservice - еще одно приложение SysInternals)

или

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