PDA

Показать полную графическую версию : скрипт, который завершает сеанс пользователя-инициатора на терминальном сервере


dmins
03-06-2015, 11:48
Есть скрипт, в котором явно прописан Логин пользователя, сессию которого завершает на терминальном сервере.
Задача: изменить его так, что бы скрипт определял САМ имя пользователя который запустил скрипт и гасил его сессию на терминале.

@echo off

Set SERVER=myserver
Set USER=testuser

For /F "Tokens=1-4 Skip=1 Delims=# " %%i In ('qwinsta /Server:%SERVER%') Do (
If "%%i"=="rdp-tcp" (
If "%%k"=="%USER%" rwinsta %%l /Server:%SERVER%
) Else (
If "%%i"=="%USER%" rwinsta %%j /Server:%SERVER%
)
)

подробнее:

Имя пользователь в домене: testuser, он запускает RemoteAPP (соответственно у него поднимается сессия терминальная) на сервере терминалов.
Далее, пользователь запускает этот скрипт, в котором ЯВНО прописано его имя пользователя "testuser".
А если таких пользователей 500, не делать же под каждого такой скрипт c указанием имени пользователя, в связи с этим:

мне бы хотелось сделать этот скрипт универсальным для всех пользователей, конкретно: что бы при запуске скрипта любым пользователем из домена, определялось имя его учетной записи и по этой записи уже гасилась сессия на терминале. У меня есть идея касаемо whoami - он выдает имя залогиненого пользователя под данной учеткой в виде domain\user. Как бы пристроить в этот скрипт, подскажите коллеги.

Спасибо.

dmins
03-06-2015, 12:13
Команда whoami выдает domain\username
Через findstr можно отсортировать вывод команды (все что после слеша) и подставить это в переменную &USER& скрипта.

Как это реализовать, или есть другие идеи ?

dmins
03-06-2015, 13:00
Подставил вместо переменной имени %username%

dmins
03-06-2015, 13:43
Решил вопрос, скрипт гасит как Активную сессси так и сессию в статусе Дисконнектед.
Выглядит это все вот так:

@echo on

Set SERVER1=IP_Адрес_вашего_терминального_сервера
Set USER=%username%

For /F "Tokens=1-4 Skip=1 Delims=# " %%i In ('qwinsta /Server:%SERVER1%') Do (
If "%%i"=="rdp-tcp" (
If "%%k"=="%USER%" rwinsta %%l /Server:%SERVER1%
) Else (
If "%%i"=="%USER%" rwinsta %%j /Server:%SERVER1%
)
)


Вам необходимо поменять только то, что выделено ЖИРНЫМ шрифтом, все остальное не трогать!

Iska
04-06-2015, 05:42
dmins, ввод ещё одной переменной окружения:
Set USER=%username% »
совершенно избыточен.




© OSzone.net 2001-2012