Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] logoff disconnected users

Ответить
Настройки темы
CMD/BAT - [решено] logoff disconnected users

Пользователь


Сообщения: 85
Благодарности: 3

Профиль | Отправить PM | Цитировать


Добрый вечер!
Много времени потратил на поиск решения logoff для disconnected users с помощь скрипта.
Посредством групповой политики отрабатывает, но не 100%. У 2-3 пользователей сессии не закрываются (((
В итоге все что нашел и что испытал
1. Log Off all Terminal Server Session Users https://support.microsoft.com/en-us/...command-prompt
Код: Выделить весь код
query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
Для ОС Win2k8 и выше, необходимо пропускать 2-е подстроки в строке (skip=2) что бы не обрабатывать учетные записи служб. Например «services».
Код: Выделить весь код
query session >session.txt
for /f "skip=2 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
Но это все справедливо для пользователей, которые на данный момент активны в терминальной сессии, т.е есть параметры - Имя сеанса, - Пользователь, -ID сеанса.
Когда пользователь disconnected

эти скрипты не отрабатывают.

2. Нашел logoff скрипт, который применим для disconnected users https://stackoverflow.com/questions/...-administrator
Код: Выделить весь код
@echo off
for /f "skip=2 tokens=2,3 delims= " %%a in ('query session') DO (
    echo %%a|findstr /xr "[1-9][0-9]* 0" >nul && (
      logoff %%a 
    )
    echo %%b|findstr /xr "[1-9][0-9]* 0" >nul && (
      logoff %%b 
    )
)
Как я понял, данный скрипт производит сброс протоколов rdp-tcp и ica-tcp.
Но обязательно данные действия надо подтверждать.

Это не возможно, если автоматизировать данный скрипт через планировщик задач.

Модифицировать данный скрипт без подтверждения действий у меня не получилось. Жду советов и помощи в модификации скрипта.

Отправлено: 19:41, 14-11-2017

 

Пользователь


Сообщения: 50
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


Цитата alpap:
@echo off
for /f "skip=1 tokens=1-3" %%a in ('query user') do set/a id=%%c& cmd/v/c "if !id!==0 (echo logoff %%b) else (echo logoff %%c))"
pause »
К сожалению не работает .(

Отправлено: 17:35, 31-05-2020 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 5313
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
quser | Select-String "Диск" |ForEach {logoff ($_.tostring() -split ' +')[2]}
https://www.tenforums.com/user-accou...rent-user.html

-------
Скачать ffmpeg для Windows: https://www.gyan.dev/ffmpeg/builds/

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:20, 31-05-2020 | #12


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png Clip2net_201027152051.png
(22.4 Kb, 5 просмотров)

Цитата DJ Mogarych:
Powershell:
Код:
quser | Select-String "Диск" |ForEach {logoff ($_.tostring() -split ' +')[2]} »
Выполняю на тестовом сервере. Хоть и видит сеанс, но отключить его не может, выдаёт ошибку о том что сеанс не найден
повершел запушен с правами администратора
выполняю не локально потому что бывает так, что мой сеанс зависает

Последний раз редактировалось zhulamanov888@vk, 27-10-2020 в 13:56.


Отправлено: 13:26, 27-10-2020 | #13


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


А можно так:
Отключить всех disconnected на локальном сервере, кроме локальной группы "избранных". В локальной группе будут доменные пользователи.... ну очень надо(

Отправлено: 12:43, 02-12-2020 | #14


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Попробовал то, что выкладывали раньше в этой теме, именно вот это:

@echo on
for /f "skip=1 tokens=1-3" %%a in ('query user^|find /v ">"') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
pause

Типа не выкидывать самого себя. Принципе все устраивает, но хотелось не выкидывать нескольких пользователей, как добавить пользователей? Подскажите плз

Отправлено: 13:21, 04-12-2020 | #15


Ветеран


Сообщения: 1075
Благодарности: 449

Профиль | Отправить PM | Цитировать


Цитата biggyRu:
не выкидывать нескольких пользователей »
только если их имена не содержат пробелов:
Код: Выделить весь код
@echo off
:: Не отключать следующих пользователей
set "us1=Vasya"
set "us2=Petya"
set "us3=Ulya"

for /f %%a in ('query user^|findstr /irv /c:">" /c:"%us1%" /c:"%us2%" /c:"%us3%"') do logoff %%a
pause
если наоборот, надо нескольких отключить, то достаточно:
Код: Выделить весь код
:: Блок переменных выше
for %%a in (%us1% %us2% %us3%) do logoff %%a
pause
такое же ограничение насчет пробелов
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:31, 04-12-2020 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] logoff disconnected users

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2012 R2 - remote app висят пользователи в disconnected dartne Windows Server 2012/2012 R2 11 10-02-2017 09:06
Прочее - Network link is disconnected anandashake Сетевое оборудование 10 11-03-2016 03:56
Win2000Server и Disconnected сессии k1sa Сетевые технологии 2 09-03-2006 15:11




 
Переход