我有一个运行在CherryPy服务器上的Python Web应用程序,它作为一个Windows服务运行。 我有一个batch file来部署此应用程序,但我仍然不得不远程桌面到服务器重新启动服务。 有什么方法来编写脚本吗?
我试过了:
psexec \\server "net restart cherrypyservice"
但是这似乎不起作用。
你可以使用sc命令行工具,但我不知道如何在Python中具体做到这一点。
说明: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
使用Russinovich的psservice :
psservice \\server restart cherrypyservice
如果你想使用psexec:
psexec \\Server cmd "/c net stop servicename" psexec \\Server cmd "/c net start servicename"
虽然在这种情况下,build议使用sc。 如果你要掏钱,它会做你需要的一切。
尝试
psexec \\server net stop cherrypyservice psexec \\server net start cherrypyservice
net stop cherrypyservice net start cherrypyservice
无论你喜欢什么远程执行引擎。
交互式使用PowerShell(localy):
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