VBS/WSH/JS - [решено] проверка состояния учетной записи

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

VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение hse2000 »

Не подскажите как бы сворганить скриптик который будет запускаться и следить включена учетная запись пользователя или отключена и есть ли активная сессия данного пользователя на терминальном сервере?
Аватара пользователя
hse2000

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение hse2000 »

понятно - на 2003-й WMIC генерит в конце пустую строку, которая сбрасывает значение переменной UserDisabled (исправил), я тестил на XP - там этой строки не было и скрипт работал как задумано
Аватара пользователя
hse2000

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение hse2000 »

если все условия выполнены (т.е. учетка заблокирована и сеанс пользователя не активен), то запускается один батник который отправляет почту, что все ОК, если хотя бы одно условие не выполнено, то запускается другой батник, который отправляет сообщение, что false
Аватара пользователя
Petya V4sechkin

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение Petya V4sechkin »

hse2000, что должен делать этот скрипт помимо слежения?
Аватара пользователя
hse2000

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение hse2000 »

примерно так:



Код:

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

@Echo Off
Set TUser=User1
Set TServer=%ComputerName%
For /F "Skip=1 UseBackQ" %%i In (`WMIC /NODE:"%TServer%" UserAccount Where 'Name Like "%TUser%"' Get Disabled^|Find /I "E"`) Do Set UserDisabled=%%i
Call :GetUserSession "%TUser%" "%TServer%"
If %UserSession% EQU 0 If /I "%UserDisabled%"=="TRUE" Call Batnik1.CMD&GoTo CONT
Call Batnik2.CMD
:CONT
EXIT
:GetUserSession
:: ------------
:: IN : %1 - User Name
::      %2 - Server Name
:: OUT: %UserSession%
For /F "Tokens=1-4 Skip=3 Delims=# " %%i In ('qwinsta /Server:"%~2"') Do (
  If /I "%%i"=="rdp-tcp" If /I "%%k"=="%~1" Set UserSession=%%l&GoTo :EOF
  If /I "%%i"=="%~1" Set UserSession=%%j&GoTo :EOF
)
Set UserSession=0&GoTo :EOF
Аватара пользователя
hse2000

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение hse2000 »

по сессии все работает, а с блоком пользователя косяк

пробовал убирать из кода If /I "%UserDisabled%"=="TRUE" по сессии батник отрабатыет, в случае с пользователем:



E:\Documents and Settings\Administrator\Desktop>For /F "Skip=1 UseBackQ" %i In (

`WMIC /NODE:"" UserAccount Where 'Name Like ""' Get Disabled`) Do Set UserDisabl

ed=%i

No Instance(s) Available.



:\Documents and Settings\Administrator\Desktop>Set UserDisabled=



в чем может быть проблема?
Аватара пользователя
amel27

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение amel27 »

hse2000, извиняюсь, после очередной редакции хвосты не подправил
Аватара пользователя
amel27

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение amel27 »

сейчас ошибки нет. НО!!! в обоих случаях запускается второй батник





Код:

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

@Echo Off
Set TUser=User1
Set TServer=%ComputerName%
For /F "Skip=1 UseBackQ" %%i In (`WMIC /NODE:"%TServer%" UserAccount Where 'Name Like "%TUser%"' Get Disabled`) Do Set UserDisabled=%%i
Call :GetUserSession "%TUser%" "%TServer%"
If %UserSession% EQU 0 If /I "%UserDisabled%"=="TRUE" Call e:\1.bat&GoTo CONT
Call e:\2.bat
:CONT
EXIT
:GetUserSession
:: ------------
:: IN : %1 - User Name
::      %2 - Server Name
:: OUT: %UserSession%
For /F "Tokens=1-4 Skip=3 Delims=# " %%i In ('qwinsta /Server:"%~2"') Do (
  If /I "%%i"=="rdp-tcp" If /I "%%k"=="%~1" Set UserSession=%%l&GoTo :EOF
  If /I "%%i"=="%~1" Set UserSession=%%j&GoTo :EOF
)
Set UserSession=0&GoTo :EOF
Аватара пользователя
hse2000

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение hse2000 »

Цитата hse2000:



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

VBS/WSH/JS - [решено] проверка состояния учетной записи




именно так, проверьте работу команды:



Код:

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

WMIC /NODE:"SRV" UserAccount Where 'Name Like "User1"' Get Disabled

З.Ы. Надеюсь, "SRV" и "User1" реальные имена сервера и его локального пользователя?
Аватара пользователя
amel27

Re: VBS/WSH/JS - [решено] проверка состояния учетной записи

Сообщение amel27 »

Да, имена реальные. Вот обработка команды (1-й случай - включена, 2-й случай - отключена):





Код:

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

E:\Documents and Settings\Administrator>WMIC /NODE:"SRV" UserAccount Where 'Name
 Like "User1"' Get Disabled
Disabled
FALSE
E:\Documents and Settings\Administrator>WMIC /NODE:"SRV" UserAccount Where 'Name
 Like "User1"' Get Disabled
Disabled
TRUE

Видно, что так эта команда отрабатывает.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»