CMD/BAT - Logoff пользователей терминала по списку в txt

Ответить
Аватара пользователя
Sub-Zero

CMD/BAT - Logoff пользователей терминала по списку в txt

Сообщение Sub-Zero »

Приветствую!

В
CMD/BAT - [решено] logoff disconnected users
сделан logoff тех кто отключился.

А мне нужно чтобы выкинуло тех пользователей, логины которых указаны в текстовом файле (например users.txt) то есть query user сравнивать с тем что в txt файле.

Заранее спасибо!
Аватара пользователя
Sub-Zero

Re: CMD/BAT - Logoff пользователей терминала по списку в txt

Сообщение Sub-Zero »

Пока ждал сам написал скриптик Изображение



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

Re: CMD/BAT - Logoff пользователей терминала по списку в txt

Сообщение alpap »

Sub-Zero, главное чтобы имена юзеров были без пробелов иначе будет сюрприз Изображение
Аватара пользователя
Sub-Zero

Re: CMD/BAT - Logoff пользователей терминала по списку в txt

Сообщение Sub-Zero »

Цитата alpap:

главное чтобы имена юзеров были без пробелов иначе будет сюрприз
CMD/BAT - Logoff пользователей терминала по списку в txt






С первой частью кода все понятно. Можно использовать:

for /f "usebackq tokens=*" %%a in ("users.txt") do (

net user "%%a" /active:no

А вот дальше меня терзают смутные сомнения... Как в qwinsta отделить одно от другого, если там одни пробелы в разделителях. Были бы хотя бы табы Изображение

Или считать количество символов в строке до начала ID rdp сессии? Профессионалы подскажите плз.
Аватара пользователя
alpap

Re: CMD/BAT - Logoff пользователей терминала по списку в txt

Сообщение alpap »

Цитата Sub-Zero:



Как в qwinsta отделить одно от другого
CMD/BAT - Logoff пользователей терминала по списку в txt




там в 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

Re: CMD/BAT - Logoff пользователей терминала по списку в txt

Сообщение alpap »

Цитата Sub-Zero:



Как в qwinsta отделить одно от другого, если там одни пробелы в разделителях
CMD/BAT - Logoff пользователей терминала по списку в txt




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



Код:

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

@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
Ответить

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