如何使用脚本远程重新启动 Windows 服务?

如何使用脚本远程重新启动 Windows 服务?

我在 CherryPy 服务器中运行一个 Python Web 应用程序,该服务器作为 Windows 服务运行。我有一个批处理文件来部署此应用程序,但我仍然需要远程桌面进入服务器以重新启动服务。有什么方法可以编写脚本吗?

我试过:

psexec \\server "net restart cherrypyservice"

但这似乎不起作用。

答案1

您可以使用 sc 命令行工具,但我不知道如何在 python 中具体执行此操作。

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

描述:SC 是一个用于与 NT 服务控制器和服务进行通信的命令行程序。用法: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

答案2

使用 Russinovich 的服务端

 psservice \\server restart cherrypyservice

答案3

如果您想使用 psexec:

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

不过在这种情况下,建议使用 sc。如果您愿意花钱,它可以满足您的所有需求。

答案4

net stop cherrypyservice
net start cherrypyservice

使用您喜欢的任何远程执行引擎。

相关内容