如何通过批处理文件脚本获取Windows服务信息

时间:2014-01-12 14:15:16

标签: batch-file command-line windows-services windows-server-2003

首先是一个公开的声明!我是批处理文件脚本的开始! 我想在win_server_2003中获取有关正在运行的win_service的信息,并检查谁开始服务,并决定在服务配置(sc)中更改此值, 第一步使用'sc qc serviceName'完成并返回此结果:

    SERVICE_NAME: W3SVC
    TYPE               : 20  WIN32_SHARE_PROCESS
    START_TYPE         : 2   AUTO_START
    ERROR_CONTROL      : 1   NORMAL
    BINARY_PATH_NAME   : C:\Windows\system32\svchost.exe -k iissvcs
    LOAD_ORDER_GROUP   :
    TAG                : 0
    DISPLAY_NAME       : World Wide Web Publishing Service
    DEPENDENCIES       : WAS
                       : HTTP
    SERVICE_START_NAME : **LocalSystem**

现在我想在变量中设置这个标记值并检查它并继续故事...... 我已达到此代码,但我无法检查数组值,然后更改服务信息:(

@echo off
setlocal EnableDelayedExpansion
set n=0

rem for set result in a array
for /f "delims=" %%a in ('sc qc service name') do (
   set /A n+=1
   set returnVal[!n!]=%%a
)

rem To show all non-empty lines:
for /F %%i in (1,1,%n%) do echo !returnVal[%%i]!

rem Or:
echo started by : %returnVal[!n!]%

。 。 。 tanx 4你的帮助!

2 个答案:

答案 0 :(得分:0)

set "serviceName=dhcp"
set "searchAccount=LocalSystem"
set "replaceAccount=........."
set "password=..........."

sc qc "%serviceName%" ^| find "SERVICE_START_NAME : %searchAccount%" >nul 2>nul 
if not errorlevel 1 (
    echo sc config %serviceName% obj= %replaceAccount% password= %password%
)

配置,测试以及输出到控制台是否正确,请删除echo命令。

答案 1 :(得分:0)

第1部分

for /f "tokens=1*delims==" %a in ('wmic service where "name='W3SVC'" get startname /value') do @for /f "delims=" %c in ("%~b") do @echo "%~c"

第2部分

wmic service where "name='W3SVC'" set startname="NSA FLIGHT COMMANDER"

请注意:Part 2可能无效,因为service.property可能是read only