Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Logoff пользователей терминала по списку в txt (http://forum.oszone.net/showthread.php?t=336770)

Sub-Zero 19-09-2018 14:48 2832044

Logoff пользователей терминала по списку в txt
 
Приветствую!
В этой теме сделан logoff тех кто отключился.
А мне нужно чтобы выкинуло тех пользователей, логины которых указаны в текстовом файле (например users.txt) то есть query user сравнивать с тем что в txt файле.
Заранее спасибо!

Sub-Zero 08-04-2019 19:04 2867092

Пока ждал сам написал скриптик :)

for /f "tokens=*" %%a in (users.txt) do (
net user %%a /active:no
for /f "tokens=2-3 skip=3" %%b in ('qwinsta') do (
if /i "%%a"=="%%b" rwinsta %%c
))

В файле users.txt соответственно должны быть имена пользователей, которых мы выкидываем из сервера терминалов - по одному имени в строке.
Причем пользователи не просто выкидываются но еще и блочатся их учетки, чтобы они не смогли больше зайти по rdp.
Если блокировка кому-то не нужна - просто удалите вторую строку скрипта net user %%a /active:no

alpap 08-04-2019 21:38 2867108

Sub-Zero, главное чтобы имена юзеров были без пробелов иначе будет сюрприз :tongue:

Sub-Zero 09-04-2019 13:19 2867171

Цитата alpap:
главное чтобы имена юзеров были без пробелов иначе будет сюрприз »


С первой частью кода все понятно. Можно использовать:
for /f "usebackq tokens=*" %%a in ("users.txt") do (
net user "%%a" /active:no
А вот дальше меня терзают смутные сомнения... Как в qwinsta отделить одно от другого, если там одни пробелы в разделителях. Были бы хотя бы табы :dont-know
Или считать количество символов в строке до начала ID rdp сессии? Профессионалы подскажите плз.

alpap 09-04-2019 14:10 2867175

Цитата:

Цитата Sub-Zero
Как в qwinsta отделить одно от другого »

там в bat почти никак, но можно так:
Код:

@echo off
for /f "skip=1 delims=" %%a in ('wmic path Win32_UserAccount get FullName /value^|find "="') do set "%%a"& call :#
pause& exit

:#
 if not "%FullName%"=="" echo %FullName%
exit /b

если нужны имена и текущего и Администратор и Гость, то так:
Код:

@echo off
for /f "skip=1 delims=" %%a in ('wmic path Win32_UserAccount get Name /value^|find "="') do set "%%a"& call :#
pause& exit

:#
 if not "%Name%"=="" echo %Name%
exit /b


alpap 09-04-2019 21:59 2867232

Цитата:

Цитата Sub-Zero
Как в qwinsta отделить одно от другого, если там одни пробелы в разделителях »

попробуйте еще вот так, мне сложно проверить:
Код:

@echo off
for /f "skip=2 tokens=2-4*" %%a in ('qwinsta') do set "s=%%d"& call :# "%%a" "%%b" "%%c"
pause& exit

:#
 if defined s (echo "%~1 %~2" %~3) else (echo "%~1" %~2)
exit /b



Время: 20:51.

Время: 20:51.
© OSzone.net 2001-