使用 WS2003 将所有正在运行的服务写入 .csv 文件

使用 WS2003 将所有正在运行的服务写入 .csv 文件

我想列出所有当前正在运行的服务并将其输出到 .csv 文件。有人知道怎么做吗?

答案1

一点好老shell脚本:

@echo off
setlocal
set SERVICES=
for /f "skip=1 tokens=*" %%S in ('%SystemRoot%\System32\net.exe start') do call :ADD_SERVICE %%S
echo Running services are : [%SERVICES%]
endlocal
goto END

:ADD_SERVICE
set SERVICE=%*
if "%SERVICE%" == "" goto END
if "%SERVICE%" == "The command completed successfully." goto END
set SERVICES=%SERVICES%%SERVICE%,
goto END

:END

答案2

我可能是邪恶的并建议使用 Cygwin 变体:

net start | sed -e '1,2d' -e ':a' -e N -e 's/\n  /,/' -e ta > services.csv

答案3

最基本的方法是;

网络启动 > services.csv

Sysinternals 有很多工具,它们可以从您的进程中提供更详细的详细信息。例如 PsService ,将结果传输到文件的相同函数将根据需要导出“> filename.extension”

答案4

我有一个比上述示例更简单的命令。Windows XP 或 Windows 2k3 及更高版本默认安装了 WMI,但要使用 wmic.exe 程序,机器可能需要在本地操作之前进行初始化。从命令提示符发出命令:

WMIC path Win32_Service where state='Running' get /format:csv

或者,对于网络上的机器:

WMIC /node:myserver Win32_Service where state='Running' get /format:csv

将输出重定向到您选择的文件。

将 /format:csv 更改为 /format:list 可获得人性化的输出。我的一台服务器为其 HP Insight 服务提供了以下输出:

AcceptPause=TRUE
AcceptStop=TRUE
Caption=HP Insight Storage Agents
CheckPoint=0
CreationClassName=Win32_Service
Description=HP Insight Storage Agents
DesktopInteract=FALSE
DisplayName=HP Insight Storage Agents
ErrorControl=Normal
ExitCode=0
InstallDate=
Name=CqMgStor
PathName=C:\WINDOWS\system32\CpqMgmt\cqmgstor\cqmgstor.exe
ProcessId=1836
ServiceSpecificExitCode=0
ServiceType=Own Process
Started=TRUE
StartMode=Auto
StartName=LocalSystem
State=Running
Status=OK
SystemCreationClassName=Win32_ComputerSystem
SystemName=CRL500
TagId=0
WaitHint=0

很可能您对其中许多属性和值都不感兴趣。假设您只想要每个正在运行的进程的名称、标题和路径名,您可以发出以下命令,仅指定这些属性:

WMIC /node:myserver path Win32_Service where state='Running' get name,caption,pathname /format:csv

相关内容