如何提取服务列表及其运行的帐户?

Pet*_*y87 15 windows-server-2003 windows-services cmd.exe

这个问题的重点在后半部分。

我知道如何提取所有服务的列表以及如何过滤它们的状态。但是,我不确定该怎么做是提取服务设置为“运行方式”的用户帐户。

我没有使用 PowerShell 的选项(不幸的是),所以我正在寻找本机 CMD 方式。我假设有一种方法可以使用 sc 查询命令,但所有这些列表是:

SERVICE_NAME
TYPE
STATE
WIN32_EXIT_CODE
SERVICE_EXIT_CODE
CHECKPOINT
WAIT_HINT
Run Code Online (Sandbox Code Playgroud)

仅供参考 - 操作系统是 WINdows 2003 SP2,我需要所有服务的这些信息,所以如果我必须为每个服务手动完成,这是一个漫长的过程。

wmz*_*wmz 22

wmic:
所有服务的名称和帐户:
wmic service get name,startname

仅启动服务:
wmic service where started=true get name, startname

名称中具有特定模式的服务:
wmic service where 'name like "%sql%"' get name, startname

很好地格式化为 html 表(然后在浏览器中打开):
(wmic service where 'name like "%sql%"' get name, startname /format:htable >out.html) && out.html

完整语法在这里:https : //msdn.microsoft.com/en-us/library/aa394531%28v=vs.85%29.aspx


arm*_*ani 5

您可以分两步完成此操作:

  1. 获取服务列表:sc \\localhost query | findstr SERVICE_NAME
  2. 您丢失的部分:sc \\localhost qc+ SERVICE_NAME + | findstr SERVICE_START_NAME

我会推荐这样的批处理脚本:

@echo off
setlocal EnableDelayedExpansion
sc \\localhost query | findstr SERVICE_NAME > services.lst
for /f "tokens=1,2" %%A in (services.lst) do (
    echo %%B
    sc \\localhost qc %%B | findstr SERVICE_START_NAME
)
del services.lst
Run Code Online (Sandbox Code Playgroud)

这会给你一个这样的输出: 在此处输入图片说明

当然,您可以进一步清理该输出或以您喜欢的任何方式写入 CSV 文件。