windows - 如何在 Windows 中收集每个服务名称及其状态?

标签 windows windows-7

我想在不使用任何第 3 方工具的情况下获取所有 service_name 及其状态。到目前为止SC命令足以获取其中一个值,例如

sc query | findstr SERVICE_NAME

但我还需要列出每个 SERVICE_NAMESTATUS

最佳答案

这是一个应该完成这项工作的命令:

for /f "tokens=2" %s in ('sc query state^= all ^| find "SERVICE_NAME"') do
    @(for /f "tokens=4" %t in ('sc query %s ^| find "STATE     "') do @echo %s is %t)

工作原理:

首先 sc query state= all |查找“SERVICE_NAME” 已运行。此命令旨在为您提供服务名称,每行一个。插入符号 ^(我已在此处删除)是必要的,以便转义要影响 sc 命令而不是 for命令本身。

然后初始 for/f 解析上面的输出以从每一行中删除标准的“SERVICE_NAME:”前缀,为您提供纯服务名称。此时输出如下所示:

C:\>for /f "tokens=2" %s in ('sc query state^= all ^| find "SERVICE_NAME"') do @echo %s
AdobeFlashPlayerUpdateSvc
AeLookupSvc
ALG
AppIDSvc
Appinfo
AppMgmt
aspnet_state
AudioEndpointBuilder
AudioSrv

此输出然后被馈送到下一个 for/f,它运行 sc query servicename,找到具有状态的行,并隔离第 4 个“字”(当前状态)。

最后,每个服务的名称连同它的状态被打印出来(此时您可以根据需要选择做一些不同的事情)。

重要说明:如果您在批处理文件中运行它,则百分号(例如 %s)需要加倍。

关于windows - 如何在 Windows 中收集每个服务名称及其状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172997/

相关文章:

c++ - 尝试编译 libdwarf,给出未定义的错误

windows - 在 Windows 上使用 docker 桌面(不是 minikube)找不到 NGINX Ingress 404

.net - 使用 .NET 访问 Windows 7 功能

java - 在 Vista 32 位和 Win 7 64 位中访问 %ProgramFiles(x86)% 的统一方式

c++ - 从 C 中的函数返回 char 数组的首选方法

python - 如何在 python 程序中处理来自 Windows 的文件切换

python - 我如何理解编码错误的消息?

c# - 具有高级安全性的 Windows 防火墙中的命令行 IP 阻止/取消阻止

c++ - windows 7 和 8 的常用对话框可以 Hook 吗

windows-7 - 操作无法完成,因为文件夹或其中的文件已在另一个程序中打开