我正在尝试创建一个bat脚本,该脚本将检查不同计算机上不同服务的状态(使用服务控制)并将其输出到文本文件。 例如:
sc (machine name) query eventlog > serviceStatus.txt
sc (machine name) query Wecsvc > serviceStatus.txt
有人可以建议我如何将不同Windows服务的状态输出到同一文本文件中吗? 我尝试用逗号分隔查询,但它似乎不是正确的语法..
我想知道的另一件事: 当我运行上面的代码时,它会输出:
SERVICE_NAME: eventlog
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
我看到"状态"跑步时是4。什么是"代码"为什么它停止了?
答案 0 :(得分:1)
在开始时删除任何现有文件并使用追加模式>>
del serviceStatus.txt 2>nul
sc machineName query eventlog >> serviceStatus.txt
sc machineName query Wecsvc >> serviceStatus.txt
或者对第一个命令使用覆盖模式>
,为后续命令使用附加模式
sc machineName query eventlog > serviceStatus.txt
sc machineName query Wecsvc >> serviceStatus.txt
或者将所有命令括在括号中,并使用覆盖模式重定向一次
>serviceStatus.txt (
sc machineName query eventlog
sc machineName query Wecsvc
)
或者如果括号使事情变得复杂,那么将所有输出生成命令放在子例程中并使用重定向调用
call :sc >serviceStatus.txt
exit /b
:sc
sc machineName query eventlog
sc machineName query Wecsvc
exit /b
请注意,最后两个选项效率最高。在你的情况下可能不是问题,但是如果在一个长时间的紧密循环中,那么对于整个循环只重定向一次而不是在循环内多次重定向可能会对性能产生很大的影响。
答案 1 :(得分:0)
wmic /node:@"c:\computerlist.txt" /failfast:on Service where "name='eventlog' or name='wscsvc'" get name, pathname, state, status /format:list
查询c:\computerlist.txt
中指定的服务器列表。格式如下
127.0.0.1
MyServerA
MyServerB
192.168.0.1
要生成已启用计算机的列表,请键入以下内容
for /f "skip=3 delims=\" %A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %A > C:\ComputerList.txt
Win32_Service
类在此处记录https://msdn.microsoft.com/en-us/library/aa394418(v=vs.85).aspx。虽然wmic
内置了完整的帮助。wmic /?
,wmic service get /?
和wmic service call /?
。
输入wmic /format /?
以获取格式列表
这是/format:list
Name=EventLog
PathName=C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted
State=Running
Status=OK
Name=wscsvc
PathName=C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted
State=Running
Status=OK
这是/format:csv
Node,Name,PathName,State,Status
127.0.0.1,EventLog,C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted,Running,OK
127.0.0.1,wscsvc,C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted,Running,OK
还有HTML输出选项。试试hform
。