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

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

rukito 13-01-2023 09:18 3000853

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

@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
))

DJ Mogarych 13-01-2023 11:06 3000859

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

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

rukito 13-01-2023 11:15 3000860

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

DJ Mogarych 13-01-2023 12:47 3000864

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 или в расшаренный каталог.
Суть: из списка, где перечислены все терминальные сервера, выбираются все, кроме того, на котором сработал скрипт. Далее для каждого сервера выполняется выборка и выход из сессии, если юзер найден.

rukito 13-01-2023 13:35 3000875

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


Время: 23:53.

Время: 23:53.
© OSzone.net 2001-