Описание утилиты:
Clear_cache_1c_users_terminal_servers.exe — это утилита для автоматической очистки кэша 1С у пользователей на терминальных серверах с выбором пользователей (отдельных и всех) и принудительным закрытием активных сессии, созданная из скрипта PowerShell для простоты и удобства использования.
Функционал утилиты:
1) Принудительное закрытие активных сессий пользователей перед очисткой кэша
2) Удаление GUID-папок (с шаблоном имени 45979b86-e329-450d-bd5b-5ac1631d4bca) в кэше 1С (версии 8.2, 8.3)
3) Поддержка нескольких серверов (работает с заранее заданным списком)
4) Логирование всех операций (файл Clear1CCache_дата.log)
5) Экспорт списка пользователей (активных и с кэшем)
6) Ручной ввод пользователя (если его нет в списке)
7) Выгрузка списка активных пользователей
Требования:
1) Windows 7/10/11 или Windows Server 2008 R2+.
2) PowerShell 5.1+ (обычно предустановлен).
3) .NET Framework 4.5+ (обычно предустановлен в Windows 10/11)
4) Права администратора (на локальном ПК и серверах).
5) Доступ к терминальным серверам (WinRM, RPC, SMB).
Исходный код действующего скрипта PowerShell к утилите прилагается.
Инструкция по запуску и использованию утилиты Clear_cache_1c_users_terminal_servers.exe
(очистки кэша 1С на терминальных серверах с выбором пользователей (отдельных и всех) и принудительным закрытием активных сессии)
Шаг 1. Подготовка.
1) Поместите в отдельную папку утилиту Clear_cache_1c_users_terminal_servers.exe.
2) Запустите от имени учетной записи, имеющего права администратора на терминальных серверах (ПКМ → Запуск от имени администратора).
Шаг 2. Первый запуск.
1) При первом запуске утилита в своей папке создаст файл terminals_servers.txt и откроет его в блокноте для редактирования. Добавьте в него имена серверов (по одному на строку), например:
ts1.company.local
ts2.company.local
192.168.1.100
2) После добавления серверов в файл сохраните его и перезапустите утилиту.
Шаг 3. Выбор сервера.
1) После запуска появится главное меню:
======== Очистка кэша 1С ========
Доступные терминальные серверы:
1. ts1.company.local
2. ts2.company.local
=== ДОСТУПНЫЕ КОМАНДЫ ===
E - Редактировать файл серверов
R - Обновить список серверов
L - Показать логи
U - Экспорт активных пользователей
Q - Выход
2) Выберите сервер (введите номер) или команду.
Шаг 4. Работа с пользователями.
1) После выбора сервера откроется меню по выбранному текущему серверу со списками активных и неактивных пользователей:
Выбран сервер: ts1.company.local
=== АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ ===
1. user1
2. user2
=== ПОЛЬЗОВАТЕЛИ С КЭШЕМ 1С (OFFLINE) ===
3. user3
4. user4
=== ВАРИАНТЫ ВВОДА ===
Отдельные номера: 1 3 5
Диапазоны: 1-3
Комбинации: 1 3-5 7
=== ДОСТУПНЫЕ КОМАНДЫ ===
M - Ввести имя пользователя вручную
B - Вернуться к выбору сервера
X - Экспорт списка пользователей
Q - Выход
2) Как выбрать пользователей:
- Отдельные номера: 1 3 5
- Диапазон: 1-3 (обработает пользователей 1, 2, 3)
- Комбинация: 1 3-5 7 (1, 3, 4, 5, 7)
Нажмите Enter → утилита закроет сессии и очистит кэш.
Шаг 5. Ручной ввод пользователя.
Если нужного пользователя нет в списке, нажмите M → введите имя в формате «DOMAIN\username» (если учетная запись — доменная) или «username» (если учетная запись — локальная), и утилита выполнит очистку кэша.
Шаг 6. Логи и экспорт активных пользователей.
1) Все действия записываются в Clear1CCache_дата.log, лог можно открыть через команду L в главном меню.
2) Экспорт списка всех активных пользователей:
- U (в главном меню) → экспортирует список.
- X (в меню по выбранному текущему серверу со списками активных и неактивных пользователей) → сохраняет список в users_terminals.txt.
Шаг 7. Выход из утилиты.
Нажмите Q в любом меню для выхода.
Возможные ошибки и решения (возможно посмотреть лог-файл Clear1CCache_*.log в директории утилиты на их наличие):
- "Список серверов не загружен или утилита не видит серверы" - Проверьте terminals_servers.txt в папке с утилитой и содержание файла
- "Сервер недоступен" - Проверьте подключение и WinRM (Test-NetConnection -ComputerName сервер -Port 5985).
- "Нет прав администратора" - Запустите утилиту от имени администратора.
- "Антивирус блокирует" - Добавьте утилиту в исключения.
Перед запуском утилиты убедитесь:
- в соблюдении требований для её выполнения
- в корректных правах доступа (локальный компьютер (где запускается скрипт), запуск от имени администратора (обязательно), разрешение на запись в текущую директорию (для логов и файлов), для терминальных серверов из списка учетная запись должна иметь права администратора на каждом из них)
- в сетевом доступе (разрешение на удаленное выполнение команд (WinRM), доступ к серверам (пинг до серверов и Test-Connection должны работать), открытость портов (WinRM (HTTP: 5985 / HTTPS: 5986), RPC (135) и SMB (445) для доступа к файловой системе).
- в отсутствии блокировки антивирусами (добавьте в исключения)
При отсутствии доступа к WinRM выполните команду в PowerShell её настройки на каждом терминальном сервере:
Enable-PSRemoting -Force
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress Any
Перед запуском выполните в PowerShell проверку готовности среды:
# 1. Проверка версии PowerShell
$PSVersionTable.PSVersion
# 2. Проверка прав администратора
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
# 3. Проверка доступа к серверу (пример)
Test-NetConnection -ComputerName "Ваш_Сервер" -Port 5985
Инструкция по утилите также подходит к исходному открытому коду-скрипту PowerShell.
Clear_cache_1c_users_terminal_servers.exe — удобный инструмент для администрирования терминальных серверов 1С, требующий только заполнение именами терминальных серверов terminals_servers.txt и работающий с правами администратора по принципу «Указать терминальные сервера → запустить».
Вступайте в нашу телеграмм-группу Инфостарт