Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] скрипт сброса дубля сеанса на других серверах

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


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

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


Добрый день всем.
Есть скрипт, суть - при входе на любой сервер после запуска скрипт получает имя сервера и соответственно выполняется нужное условие. Но работает не верно из-за синтаксических ошибок.
Прошу помощи.

@echo off
setlocal


if (%hostname%) EQU "SRV-TL-TSD0608" do ((qwinsta /server:SRV-TL-TSD0508 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0508 %%i /V
qwinsta /server:SRV-TL-TSD0408 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0408 %%i /V
qwinsta /server:SRV-TL-TSD0308 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0308 %%i /V
qwinsta /server:SRV-TL-TSD0208 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0208 %%i /V
qwinsta /server:SRV-TL-TSD0108 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0108 %%i /V
)

else if (%hostname%) EQU "SRV-TL-TSD0508" do ( qwinsta /server:SRV-TL-TSD0608 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0608 %%i /V
qwinsta /server:SRV-TL-TSD0408 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0408 %%i /V
qwinsta /server:SRV-TL-TSD0308 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0308 %%i /V
qwinsta /server:SRV-TL-TSD0208 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0208 %%i /V
qwinsta /server:SRV-TL-TSD0108 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0108 %%i /V
)
else if (%hostname%) EQU "SRV-TL-TSD0408" do ( qwinsta /server:SRV-TL-TSD0608 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0608 %%i /V
qwinsta /server:SRV-TL-TSD0508 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0508 %%i /V
qwinsta /server:SRV-TL-TSD0308 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0308 %%i /V
qwinsta /server:SRV-TL-TSD0208 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0208 %%i /V
qwinsta /server:SRV-TL-TSD0108 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0108 %%i /V
)
else if (%hostname%) EQU "SRV-TL-TSD0308" do ( qwinsta /server:SRV-TL-TSD0608 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0608 %%i /V
qwinsta /server:SRV-TL-TSD0508 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0508 %%i /V
qwinsta /server:SRV-TL-TSD0408 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0408 %%i /V
qwinsta /server:SRV-TL-TSD0208 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0208 %%i /V
qwinsta /server:SRV-TL-TSD0108 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0108 %%i /V
)
else if (%hostname%) EQU "SRV-TL-TSD0208" do ( qwinsta /server:SRV-TL-TSD0608 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0608 %%i /V
qwinsta /server:SRV-TL-TSD0508 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0508 %%i /V
qwinsta /server:SRV-TL-TSD0408 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0408 %%i /V
qwinsta /server:SRV-TL-TSD0308 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0308 %%i /V
qwinsta /server:SRV-TL-TSD0108 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0108 %%i /V
)
else if (%hostname%) EQU "SRV-TL-TSD0108" do ( qwinsta /server:SRV-TL-TSD0608 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0608 %%i /V
qwinsta /server:SRV-TL-TSD0508 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0508 %%i /V
qwinsta /server:SRV-TL-TSD0408 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0408 %%i /V
qwinsta /server:SRV-TL-TSD0308 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0308 %%i /V
qwinsta /server:SRV-TL-TSD0208 | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:SRV-TL-TSD0208 %%i /V
))

Отправлено: 09:18, 13-01-2023

 

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

fascinating rhythm


Moderator


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

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


Нам предлагается поискать синтаксические ошибки в вашем скрипте?

Лучше опишите задачу.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 11:06, 13-01-2023 | #2



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

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


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


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

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


задача - при входе в терминальный сервер его старые сеансы на всех других серверах завершались.

Отправлено: 11:15, 13-01-2023 | #3


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

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$servers = @(
"SRV-TL-TSD0108"
"SRV-TL-TSD0208"
"SRV-TL-TSD0308"
"SRV-TL-TSD0408"
"SRV-TL-TSD0508"
"SRV-TL-TSD0608"
) -ne $env:COMPUTERNAME

$servers |% {
$users = qwinsta /server:$_ |% {$_.trim() -replace "\s+",","} |ConvertFrom-Csv
    if ($user = $users |? ПОЛЬЗОВАТЕЛЬ -eq $env:username) {
        logoff /server:$_ $user.id
    }
}
Скрипт универсальный, лучше его положить куда-нибудь на \\domain.com\NETLOGON или в расшаренный каталог.
Суть: из списка, где перечислены все терминальные сервера, выбираются все, кроме того, на котором сработал скрипт. Далее для каждого сервера выполняется выборка и выход из сессии, если юзер найден.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 12:47, 13-01-2023 | #4


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


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

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


очень благодарен!

Отправлено: 13:35, 13-01-2023 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Скрипт для удаленного сброса клиента службы Автоматического обновления TheSt1tch Скриптовые языки администрирования Windows 1 26-01-2015 10:44
Win32 API - Общие данные сеанса 0 и сеанса 1 в Windows Server 2008 richdikb Программирование и базы данных 0 26-10-2011 15:22
VBS/WSH/JS - [решено] скрипт с завершением сеанса определенного пользователя hse2000 Скриптовые языки администрирования Windows 11 04-06-2011 08:26
Разное - [решено] Завершение сеанса Windows через некоторое время после сеанса RDP Romero_Ekb Microsoft Windows 7 1 19-11-2010 10:08




 
Переход