Службы - [решено] вопрос: контроль за службой

Аватара пользователя
foxbat

Re: Службы - [решено] вопрос: контроль за службой

Сообщение foxbat »

Цитата SavmiN:



Logon-скрипт - очень любопытно! поясни!
Службы - [решено] вопрос: контроль за службой




Пуск\Выполнить: gpedit.msc

Путь: Конфигурация пользователя\Конфигурация Windows\Сценарии



сюда можно добавлять любые *.BAT, *.CMD, *.VBS или *.JS скрипты на вход и выход... правда локальные политики (в отличие от доменных) отрабатывают одинаково для всех локальных пользователей, поэтому распознавание пользователей придется встраивать в скрипт... вот доработанный вариант батника, который:



для пользователя USER-1: останавливает и отключает службу Планировщика задач и перегружает "Обозреватель"

для пользователя USER-2: восстанавливает состояние Планировщика и перезапускает службу Диспетчера печати.

Код:

Код: Выделить всё

@echo off
IF "%USERNAME%"=="User-1" (
	CALL :SC_STOP SCHEDULE
	CALL :SC_DISABLE SCHEDULE
	CALL :SC_RESTART BROWSER
)
IF "%USERNAME%"=="User-2" (
	CALL :SC_ENABLE SCHEDULE
	CALL :SC_START SCHEDULE
	CALL :SC_RESTART SPOOLER
)
EXIT
:SC_STOP
:: -----
Set STATUS=RUNNING
@echo Остановка сервиса "%1"...
:SC_STOP_LOOP
SC STOP %1 >nul
For /F "Tokens=3 Usebackq Delims=: " %%i in (`SC QUERY %1^|FIND "STATE"`) Do SET STATUS=%%i
If NOT "%STATUS%"=="STOPPED" GOTO :SC_STOP_LOOP
@echo Сервис остановлен!
:: -----
GOTO :EOF
:SC_START
:: -----
Set STATUS=STOPPED
@echo Запуск сервиса "%1"...
:SC_START_LOOP
SC START %1 >nul
For /F "Tokens=3 Usebackq Delims=: " %%i in (`SC QUERY %1^|FIND "STATE"`) Do SET STATUS=%%i
If NOT "%STATUS%"=="RUNNING" GOTO :SC_START_LOOP
@echo Сервис запущен!
:: -----
GOTO :EOF
:SC_RESTART
:: -----
CALL :SC_STOP  %1
CALL :SC_START %1
:: -----
GOTO :EOF
:SC_ENABLE
:: -----
SC CONFIG %1 start= demand >nul
@echo Сервис %1 включен!
:: -----
GOTO :EOF
:SC_DISABLE
:: -----
SC CONFIG %1 start= disabled >nul
@echo Сервис %1 отключен!
:: -----
GOTO :EOF
Аватара пользователя
SavmiN

Re: Службы - [решено] вопрос: контроль за службой

Сообщение SavmiN »

Есть подробная информация по возможностям командной строки ? в справочнике параметров по командной строке (v 1.1) я не нахожу описания и поэтому не могу разобрать например такие операторы



@echo off

If "%1"=="" Exit

Set STATUS=RUNNING



@echo Остановка сервиса "%1"...

:LBL0

SC STOP %1 >nul 2>&1

For /F "Tokens=3 Usebackq Delims=: " %%i in (`SC QUERY %1^|FIND "STATE"`) Do SET STATUS=%%i

If NOT "%STATUS%"=="STOPPED" GOTO :LBL0

SC START %1 >nul 2>&1

@echo Произведен перезапуск сервиса!
Аватара пользователя
amel27

Re: Службы - [решено] вопрос: контроль за службой

Сообщение amel27 »

Цитата amel27:



локальные политики (в отличие от доменных)
Службы - [решено] вопрос: контроль за службой




ну и попутный вопрос! - для домена на отдельном находящемся ПК - тоже в GP можно настроить для каждого или всех сразу свои сценарии??

а также: USER-1 - это имя учетной записи - а пароль как указывать для автологона? ну и совсем плохой вопрос - что такое в данном случае "%1" = что то припоминаю …



HLT,
Цитата:



описание токенсов и делимсов



- ну раз начали издеваться - то хотя бы на понятном русском языке %))) чтобы прочесть была возможность! Изображение
Аватара пользователя
SavmiN

Re: Службы - [решено] вопрос: контроль за службой

Сообщение SavmiN »

Цитата SavmiN:



в GP можно настроить для каждого или всех сразу свои сценарии??
Службы - [решено] вопрос: контроль за службой




в домене GPO привязываются к подразделениям (OU), соответственно политики отрабатывают для всех пользователей, входящих в этот контейнер... а уж сколько создавать OU и как по ним раскидывать пользователей - вопрос планирования.


Цитата SavmiN:



USER-1 - это имя учетной записи - а пароль как указывать для автологона?
Службы - [решено] вопрос: контроль за службой




скрипт отработает автоматически после регистрации пользователя, пароль не нужен


Цитата SavmiN:



что такое в данном случае "%1"
Службы - [решено] вопрос: контроль за службой




макрос, заменяемый при выполнении на значение первого параметра, переданного скрипту (или процедуре)
Аватара пользователя
amel27

Re: Службы - [решено] вопрос: контроль за службой

Сообщение amel27 »

если не трудно разьясните пож-та эту строку, я что понял сам откаментирую а вы меня поправте если не так:

SC STOP %1 >nul 2>&1

SC - команда cmd

STOP - команда (параметр) команды SC

%1 - параметр командной строки, в данном случае название сервиса

-до этого момента понятно, а дальше

>nul - ?? некое пустое устройство-файл, т.е. перенаправляем вникуда, (отчего ничего не видим в консоли когда выполняем команду)

2>&1 - "2>&1" это дублирование дескрипторов, т.е. выход дескриптора 2 (Ошибка вывода) направляется в дескриптор 1 (Вывод командной строки), так ? только с НУЛом у меня всё равно пустой экран. Вот к примеру пускаю В CMD





X:\>sc stop W32Time



SERVICE_NAME: W32Time

TYPE : 20 WIN32_SHARE_PROCESS

STATE : 3 STOP_PENDING

(NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)

WIN32_EXIT_CODE : 0 (0x0)

SERVICE_EXIT_CODE : 0 (0x0)

CHECKPOINT : 0x1

WAIT_HINT : 0x3e8



X:\>sc stop W32Time >nul



ничего нет



X:\>sc stop W32Time >nul 2&>1



тоже ничего нет
Аватара пользователя
foxbat

Re: Службы - [решено] вопрос: контроль за службой

Сообщение foxbat »

если не трудно разьясните пож-та эту строку, я что понял сам откаментирую а вы меня поправте если не так:

SC STOP %1 >nul 2>&1

SC - команда cmd

STOP - команда (параметр) команды SC

%1 - параметр командной строки, в данном случае название сервиса

-до этого момента понятно, а дальше

>nul - ?? некое пустое устройство-файл, т.е. перенаправляем вникуда, (отчего ничего не видим в консоли когда выполняем команду)

2>&1 - "2>&1" это дублирование дескрипторов, т.е. выход дескриптора 2 (Ошибка вывода) направляется в дескриптор 1 (Вывод командной строки), так ? только с НУЛом у меня всё равно пустой экран. Вот к примеру пускаю В CMD





X:\>sc stop W32Time



SERVICE_NAME: W32Time

TYPE : 20 WIN32_SHARE_PROCESS

STATE : 3 STOP_PENDING

(NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)

WIN32_EXIT_CODE : 0 (0x0)

SERVICE_EXIT_CODE : 0 (0x0)

CHECKPOINT : 0x1

WAIT_HINT : 0x3e8



X:\>sc stop W32Time >nul



ничего нет



X:\>sc stop W32Time >nul 2&>1



тоже ничего нет
Аватара пользователя
SavmiN

Re: Службы - [решено] вопрос: контроль за службой

Сообщение SavmiN »

Цитата foxbat:



только с НУЛом у меня всё равно пустой экран
Службы - [решено] вопрос: контроль за службой




можешь убрать 2&>1 - подавляет сообщения об ошибках... если ошибок нет то и перенаправлять нечего




Цитата SavmiN:



как мне указывать его в коде?
Службы - [решено] вопрос: контроль за службой




смотри имя ключа реестра в "HKLM\SYSTEM\CurrentControlSet\Services" (искать можно по полному имени сервиса или имени образа pshell.exe)
Аватара пользователя
amel27

Re: Службы - [решено] вопрос: контроль за службой

Сообщение amel27 »

amel27, отлично! - осталось уточнить - уточняю Изображение для "User-2"
Цитата amel27:



CALL :SC_ENABLE SCHEDULE

CALL :SC_START SCHEDULE
Службы - [решено] вопрос: контроль за службой




- это запуск программы при загрузке - а где наблюдение? - если в случае сбоя произойдЁт отключение SCHEDULE - потребуется его повторный запуск, а при невозможности ребут ОС !!!

поясни пожалуйста !!!

Спасибо!
Ответить

Вернуться в «Microsoft Windows 2000/XP»