Очистить КЭШ на терминальных серверах

Порой политика не отрабатывает, а по мере того, как она допиливается, приходят заявки вида:

Описание: Очистить КЭШ 1С  на терминальных серверах:
TS1 ; TS2 ; TS4 ; TS9 ; TS10 ; TS11 ; TS12
Login: alektest
При необходимости, можно завершить процесс 1cv8.exe пользователя на терминальном сервере.

и чтобы не обходить каждый сервер, либо заходя на него через mstsc /v: или Win + E и через строку адреса указываю путь где хранится кэш  удалять GUID каталог формируемый при инициализации подключения к  базе я по быстрому наваял небольшой batch скрипт который я запускаю находясь в консоли командной строки на своей рабочей системе под управлением Windows 10 Pro (она в домене, как и терминальные сервера).[wbcr_html_snippet]: PHP snippets error (not passed the snippet ID)

Мой скрипт выполняющий заявку:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100echo offrem Author Ollo Alexander aka ekzorchikrem 19.08.2019 11:52rem Work!!! setlocal enabledelayedexpansionrem кода достигнут конец файла выполняется endlocal, все из-за строчки вышеset /p name=[Name TS User:]set host1=ts1.polygon.localset host2=ts2.polygon.localset host4=ts4.polygon.localset host9=ts9.polygon.localset host10=ts10.polygon.localset host11=ts11.polygon.localset host12=ts12.polygon.local rem TS1echo TS1rem clear var userid1set userid1=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host1%’) do set userid1=%%i && echo %userid1%echo y | logoff %userid1% /server:%host1% /VMecho %userid1%rem clear var userid1set userid1=rmdir /S /Q \\%host1%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host1%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49 rem TS2echo TS2rem clear var userid2set userid2=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host2%’) do set userid2=%%i && echo %userid2%echo y | logoff %userid2% /server:%host2% /VMecho %userid2%rem clear var userid2set userid2=rmdir /S /Q \\%host2%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host2%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49 rem TS4echo TS4rem clear var userid4set userid4=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host4%’) do set userid4=%%i && echo %userid4%echo y | logoff %userid4% /server:%host4% /VMecho %userid4%rem clear var userid4set userid4=rmdir /S /Q \\%host4%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host4%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49 rem TS9echo TS9rem clear var userid9set userid9=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host9%’) do set userid9=%%i && echo %userid9%echo y | logoff %userid9% /server:%host9% /VMecho %userid9%rem clear var userid9set userid9=rmdir /S /Q \\%host9%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host9%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49 rem TS10echo TS10rem clear var userid10set userid10=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host10%’) do set userid10=%%i && echo %userid10%echo y | logoff %userid10% /server:%host10% /VMecho %userid10%rem clear var userid10set userid10=rmdir /S /Q \\%host10%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host10%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49 rem TS11echo TS11rem clear var userid11set userid11=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host11%’) do set userid11=%%i && echo %userid11%echo y | logoff %userid11% /server:%host11% /VMecho %userid11%rem clear var userid11set userid11=rmdir /S /Q \\%host11%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host11%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49 rem TS12echo TS12rem clear var userid12set userid12=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host12%’) do set userid12=%%i && echo %userid12%echo y | logoff %userid12% /server:%host12% /VMecho %userid12%rem clear var userid12set userid12=rmdir /S /Q \\%host12%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host12%\c$\Users\%name%\AppData\Roaming\1C\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49pause

Сохраняю его (Скрипт) в каталог со скриптами на рабочей станции: «c:\Script\tips_ts_clear_cache_v1.bat»

Запускаю его когда приходит очередная заявка:

Win + R -> cd /d c:\Script

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647c:\Script>tips_ts_clear_v1.bat c:\Script>echo off[Name TS User:]alektestTS1Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.TS2Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.TS4Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.TS9Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.TS10Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.TS11Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.TS12Не существуют сеансы для alektestЕсли указано имя сервера, нужно указать код сеанса или имя сеанса.Режим вывода команд на экран (ECHO) отключен.Не удается найти указанный файл.Не удается найти указанный файл.Для продолжения нажмите любую клавишу . . .

Это запущенный пример, как видно ни на одном терминальном сервере нет залогиненной учетной записи под логином alektest, а если бы соединение было, то в одном из подключении строки были бы:

123456TS11Режим вывода команд на экран (ECHO) отключен.Будет выполнен выход alektest (сеанс 1277) из системы ,продолжить (n=нет)?1277Не удается найти указанный файл.Не удается найти указанный файл.

От 18.11.2019 — Выкладываю свой скрипт выполняющий задачу очистки кеша

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141echo offrem Author Ollo Alexander aka ekzorchikrem 18.11.2019 11:52rem Work!!! setlocal enabledelayedexpansionrem кода достигнут конец файла выполняется endlocal, все из-за строчки вышеset /p name=[Name TS User:]dsquery user -samid %name%set host1=ts1.polygon.localset host2=ts2.polygon.localset host9=ts9.polygon.localset host10=ts10.polygon.localset host11=ts11.polygon.localset host12=ts12.polygon.localset host13=u2-ts13.polygon.localset host14=u2-ts14.polygon.localset host15=u2-ts15.polygon.local  rem TS1echo TS1rem clear var userid1set userid1=rem skip=1 – пропустить первую строкуrem tokens=3 – перейти на третью колонкуfor /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host1%’) do set userid1=%%i && echo %userid1%echo y | logoff %userid1% /server:%host1% /VMecho %userid1%rem clear var userid1set userid1=rmdir /S /Q \\%host1%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host1%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host1%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS2echo TS2rem clear var userid2set userid2=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host2%’) do set userid2=%%i && echo %userid2%echo y | logoff %userid2% /server:%host2% /VMecho %userid2%rem clear var userid2set userid2=rmdir /S /Q \\%host2%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host2%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host2%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS9rem clear var userid9echo TS9set userid9=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host9%’) do set userid9=%%i && echo %userid9%echo y | logoff %userid9% /server:%host9% /VMecho %userid9%rem clear var userid9set userid9=rmdir /S /Q \\%host9%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host9%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host9%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS10echo TS10rem clear var userid10set userid10=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host10%’) do set userid10=%%i && echo %userid10%echo y | logoff %userid10% /server:%host10% /VMecho %userid10%rem clear var userid10set userid10=rmdir /S /Q \\%host10%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host10%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host10%\c$\Users\%name%\AppData\local\1c\1cv8\dumps  rem TS11echo TS11rem clear var userid11set userid11=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host11%’) do set userid11=%%i && echo %userid11%echo y | logoff %userid11% /server:%host11% /VMecho %userid11%rem clear var userid11set userid11=rmdir /S /Q \\%host11%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host11%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host11%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS12echo TS12rem clear var userid12set userid12=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host12%’) do set userid12=%%i && echo %userid12%echo y | logoff %userid12% /server:%host12% /VMecho %userid12%rem clear var userid12set userid12=rmdir /S /Q \\%host12%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host12%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host12%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS13echo TS13rem clear var userid13set userid13=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host13%’) do set userid13=%%i && echo %userid13%echo y | logoff %userid13% /server:%host13% /VMecho %userid13%rem clear var userid13set userid13=rmdir /S /Q \\%host13%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host13%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host13%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS14echo TS14rem clear var userid14set userid14=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host14%’) do set userid14=%%i && echo %userid14%echo y | logoff %userid14% /server:%host14% /VMecho %userid14%rem clear var userid14set userid14=rmdir /S /Q \\%host14%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host14%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host14%\c$\Users\%name%\AppData\local\1c\1cv8\dumps rem TS15echo TS15rem clear var userid15set userid15=for /f “skip=1 tokens=3” %%i in (‘qwinsta %name% /server:%host15%’) do set userid15=%%i && echo %userid15%echo y | logoff %userid15% /server:%host15% /VMecho %userid15%rem clear var userid15set userid15=rmdir /S /Q \\%host15%\c$\Users\%name%\AppData\local\1c\1cv8\6c97f90c-6d0e-46b6-b042-b61a02b5fd49rmdir /S /Q \\%host15%\c$\Users\%name%\AppData\Roaming\1C\1cv8rmdir /S /Q \\%host15%\c$\Users\%name%\AppData\local\1c\1cv8\dumps pause

Пока данное решение меня выручает в решении задач приходящих на третью линию поддержки где я сейчас работают. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.