VBS/WSH/JS - [решено] проверка состояния учетной записи
-
hse2000
VBS/WSH/JS - [решено] проверка состояния учетной записи
Не подскажите как бы сворганить скриптик который будет запускаться и следить включена учетная запись пользователя или отключена и есть ли активная сессия данного пользователя на терминальном сервере?
-
hse2000
Re: VBS/WSH/JS - [решено] проверка состояния учетной записи
понятно - на 2003-й WMIC генерит в конце пустую строку, которая сбрасывает значение переменной UserDisabled (исправил), я тестил на XP - там этой строки не было и скрипт работал как задумано
-
hse2000
Re: VBS/WSH/JS - [решено] проверка состояния учетной записи
если все условия выполнены (т.е. учетка заблокирована и сеанс пользователя не активен), то запускается один батник который отправляет почту, что все ОК, если хотя бы одно условие не выполнено, то запускается другой батник, который отправляет сообщение, что false
-
Petya V4sechkin
Re: VBS/WSH/JS - [решено] проверка состояния учетной записи
hse2000, что должен делать этот скрипт помимо слежения?
-
hse2000
Re: VBS/WSH/JS - [решено] проверка состояния учетной записи
примерно так:
Код:
Код:
Код: Выделить всё
@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 - [решено] проверка состояния учетной записи
по сессии все работает, а с блоком пользователя косяк
пробовал убирать из кода 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=
в чем может быть проблема?
пробовал убирать из кода 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 - [решено] проверка состояния учетной записи
hse2000, извиняюсь, после очередной редакции хвосты не подправил
-
amel27
Re: VBS/WSH/JS - [решено] проверка состояния учетной записи
сейчас ошибки нет. НО!!! в обоих случаях запускается второй батник
Код:
Код:
Код: Выделить всё
@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:
может я ошибаюсь, но мне кажется что скрипт не подставляет тут значение в кавычки
именно так, проверьте работу команды:
Код:
З.Ы. Надеюсь, "SRV" и "User1" реальные имена сервера и его локального пользователя?
может я ошибаюсь, но мне кажется что скрипт не подставляет тут значение в кавычки
VBS/WSH/JS - [решено] проверка состояния учетной записи
именно так, проверьте работу команды:
Код:
Код: Выделить всё
WMIC /NODE:"SRV" UserAccount Where 'Name Like "User1"' Get DisabledЗ.Ы. Надеюсь, "SRV" и "User1" реальные имена сервера и его локального пользователя?
-
amel27
Re: VBS/WSH/JS - [решено] проверка состояния учетной записи
Да, имена реальные. Вот обработка команды (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Видно, что так эта команда отрабатывает.