Windows命令获取服务状态?

Oli*_*lay 22 windows-services batch-file windows-server-2003

我需要知道我的批处理脚本结束时服务的状态,它使用"net stop thingie"和"net start thingie"重新启动服务.

在我最喜欢的理想世界中,我想通过电子邮件将状态发送给自己,在寒冷的冬夜里阅读,以确保我知道运行正常的服务器的温暖和舒适.

只是为了让您知道,我使用的是Windows Server 2003平台,批处理文件似乎是最佳选择.我不介意使用别的东西,而将建议很开放,但只是为知识的缘故(如僵尸渴望的大脑,我想,为什么不吹我自己),是有一个命令,让我检查关于服务的状态,在命令行?

我应该将命令的输出重定向到文件吗?

我的裤子到底在哪里?(天哪,我真的希望插入这里的幽默不会侮辱任何人.这是星期三早上,幽默我也需要:P)

[编辑:]我使用的解决方案(不再)可以从--link redacted--下载

它被用作在夜间执行的任务集,并在早上检查我的电子邮件,我看到该服务是否已正确重新启动.

Rôm*_*con 27

你试过sc.exe吗?

C:\> for /f "tokens=2*" %a in ('sc query audiosrv ^| findstr STATE') do echo %b
4  RUNNING

C:\> for /f "tokens=2*" %a in ('sc query sharedaccess ^| findstr STATE') do echo %b
1  STOPPED
Run Code Online (Sandbox Code Playgroud)

请注意,在批处理文件中,您需要将每个百分号加倍.


JRL*_*JRL 19

您可以致电net start "service name"您的服务.如果它没有启动,它将启动它并返回errorlevel = 0,如果它已经启动它将返回errorlevel = 2.


Mar*_*ell 12

使用pstools - 特别是psservice和"query" - 例如:

psservice query "serviceName"
Run Code Online (Sandbox Code Playgroud)


小智 10

看起来也很hier:

NET START | 查找"服务名称"> nul IF errorlevel 1 ECHO服务未运行

刚从http://ss64.com/nt/sc.html复制而来


aph*_*ria 9

如果PowerShell可供您使用......

Get-Service -DisplayName *Network* | ForEach-Object{Write-Host $_.Status : $_.Name}
Run Code Online (Sandbox Code Playgroud)

会给你...

Stopped : napagent
Stopped : NetDDE
Stopped : NetDDEdsdm
Running : Netman
Running : Nla
Stopped : WMPNetworkSvc
Stopped : xmlprov
Run Code Online (Sandbox Code Playgroud)

如果您只需要检查一项服务,则可以使用特定服务名称替换****Network****.


MaS*_*aNa 6

使用Windows脚本:

Set ComputerObj = GetObject("WinNT://MYCOMPUTER")    
ComputerObj.Filter = Array("Service")    
For Each Service in ComputerObj    
    WScript.Echo "Service display name = " & Service.DisplayName    
    WScript.Echo "Service account name = " & Service.ServiceAccountName    
    WScript.Echo "Service executable   = " & Service.Path    
    WScript.Echo "Current status       = " & Service.Status    
Next
Run Code Online (Sandbox Code Playgroud)

您可以轻松过滤上述所需的特定服务.

  • 选择因为无需安装.感谢你们! (2认同)