Проверьте, является ли служба Windows автоматической - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь создать пакетный скрипт, чтобы увидеть, если служба Windows, напр.wuauserv установлен на автоматический запуск.До сих пор я пробовал

sc query [ServiceName] | findstr /i "STATE"

, но это только показывает мне рабочее состояние, и я хочу знать, настроено ли оно на автоматический запуск.Бонусные баллы за оператор IF, который проверяет состояние.

РЕШЕНИЕ Вот решение, которое я разработал благодаря нижеуказанным людям и другим пользователям SO. Не стесняйтесь вносить улучшения в этот GitHub Gist

@ECHO OFF 
ECHO This script re-enables Windows Update and sets it to Automatic. 
ECHO However, this script needs to be run as admin.
net.exe session 1>NUL 2>NUL || goto :not_admin
echo Sucess! You ran this script with Admin rights!
sc qc "wuauserv" | findstr /i AUTO_START > nul
goto :check

:check
if %ERRORLEVEL% equ 0 ( 
    ECHO The service is set to start automatically. 
    TIMEOUT 5
) ELSE ( 
    echo The service is NOT set to start automatically. Trying again. 
    sc config "wuauserv" start= auto
    net start wuauserv
    goto :check
) 
exit


:not_admin
echo ERROR: please run as admin 
TIMEOUT 10 /nobreak
exit 

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Альтернативный вариант с использованием win32_service через WMIC:

WMIC Service Where "Name='wuauserv' And StartMode='Auto'" Get State /Value 2>Nul|Find "State="||Echo Service is not set to Auto

Если вы хотите изменить режим запуска, если он не установлен на автоматический, вы, вероятно, могли бы сделать это также одной командой:

WMIC Service Where "Name='wuauserv' And StartMode!='Auto'" Call ChangeStartMode "Auto"
0 голосов
/ 23 января 2019

Попробуйте этот пакетный файл, который принимает имя службы в качестве параметра и возвращает 0, если автоматический, 1, если нет:

@echo off

if [%1]==[] (
  echo Missing service name. Returning 2.
  exit /b 2
)

sc qc "%1" | findstr /i AUTO_START > nul

if %ERRORLEVEL% equ 0 (
  echo The "%1" service is set to start automatically. Returning 0.
  exit /b 0
) else (
  echo The "%1" service is NOT set to start automatically ^(or the service is inaccessible^). Returning 1.
  exit /b 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...