diff --git a/windows/1CDefenderExclusion.bat b/1c/1CDefenderExclusion.bat similarity index 100% rename from windows/1CDefenderExclusion.bat rename to 1c/1CDefenderExclusion.bat diff --git a/windows/1CDefenderExclusion.ps1 b/1c/1CDefenderExclusion.ps1 similarity index 100% rename from windows/1CDefenderExclusion.ps1 rename to 1c/1CDefenderExclusion.ps1 diff --git a/1c/Clear1CCache.ps1 b/1c/Clear1CCache.ps1 new file mode 100644 index 0000000..88da1f0 --- /dev/null +++ b/1c/Clear1CCache.ps1 @@ -0,0 +1,93 @@ +<# +.SYNOPSIS + Очистка кэша клиента 1С:Предприятие 8 (тонкий/толстый клиент). + +.DESCRIPTION + Закрывает запущенные процессы 1С и удаляет кэш из + %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. + Список информационных баз (ibases.v8i в каталоге 1CEStart) НЕ затрагивается. + +.PARAMETER Base + Часть имени/GUID папки конкретной базы. Если не задан — чистится весь кэш. + +.PARAMETER Force + Не спрашивать подтверждение перед закрытием процессов 1С. + +.EXAMPLE + .\Clear-1CCache.ps1 + Чистит весь кэш с подтверждением закрытия процессов. + +.EXAMPLE + .\Clear-1CCache.ps1 -Force + Чистит весь кэш без вопросов (для автозапуска). + +.EXAMPLE + .\Clear-1CCache.ps1 -Base "a1b2c3" + Чистит только папки, в имени которых встречается "a1b2c3". +#> + +[CmdletBinding()] +param( + [string]$Base, + [switch]$Force +) + +$ErrorActionPreference = 'Stop' + +# Процессы клиента/сервера 1С +$procNames = @('1cv8', '1cv8c', '1cv8s') + +$running = Get-Process -Name $procNames -ErrorAction SilentlyContinue +if ($running) { + Write-Host "Запущены процессы 1С:" -ForegroundColor Yellow + $running | Format-Table Id, ProcessName, StartTime -AutoSize | Out-String | Write-Host + if (-not $Force) { + $ans = Read-Host "Закрыть их и продолжить? (y/N)" + if ($ans -notmatch '^[YyДд]') { Write-Host "Отменено."; exit 1 } + } + $running | Stop-Process -Force + Start-Sleep -Seconds 1 + Write-Host "Процессы 1С закрыты." -ForegroundColor Green +} + +# Каталоги кэша +$roots = @( + (Join-Path $env:APPDATA '1C\1cv8'), + (Join-Path $env:LOCALAPPDATA '1C\1cv8') +) + +$freed = 0 +$removed = 0 + +foreach ($root in $roots) { + if (-not (Test-Path $root)) { continue } + Write-Host "`nОбработка: $root" -ForegroundColor Cyan + + $items = Get-ChildItem -LiteralPath $root -Force -ErrorAction SilentlyContinue + if ($Base) { + $items = $items | Where-Object { $_.Name -like "*$Base*" } + } + + foreach ($item in $items) { + try { + $size = 0 + if ($item.PSIsContainer) { + $size = (Get-ChildItem -LiteralPath $item.FullName -Recurse -Force -ErrorAction SilentlyContinue | + Measure-Object -Property Length -Sum).Sum + } else { + $size = $item.Length + } + Remove-Item -LiteralPath $item.FullName -Recurse -Force -ErrorAction Stop + if ($size) { $freed += $size } + $removed++ + Write-Host " удалено: $($item.Name)" -ForegroundColor DarkGray + } + catch { + Write-Warning " не удалось удалить $($item.Name): $($_.Exception.Message)" + } + } +} + +$mb = [math]::Round($freed / 1MB, 1) +Write-Host "`nГотово. Удалено объектов: $removed, освобождено ~$mb МБ." -ForegroundColor Green +Write-Host "Кэш пересоздастся при следующем запуске 1С." -ForegroundColor Gray diff --git a/1c/README.md b/1c/README.md new file mode 100644 index 0000000..b89661b --- /dev/null +++ b/1c/README.md @@ -0,0 +1,13 @@ +# 1c/ + +Windows-скрипты для администрирования 1С:Предприятие (клиент и рабочие места). + +| Файл | Назначение | +|---|---| +| `1CDefenderExclusion.ps1` | Добавляет исключения 1С в Windows Defender: каталоги платформы и файловых баз (из `ibases.v8i` всех профилей), расширения и процессы. Запуск от администратора. | +| `1CDefenderExclusion.bat` | Лаунчер для `1CDefenderExclusion.ps1` (запуск двойным кликом). | +| `Replace-1C-Ibases.ps1` | Раздаёт эталонный `ibases.v8i` (список баз 1С) пользователям группы `1C_all` с бэкапом старых файлов. Интерактивный выбор пользователей. | +| `Clear1CCache.ps1` | Очистка кэша клиента 1С (`%APPDATA%\1C\1cv8`, `%LOCALAPPDATA%\1C\1cv8`) с закрытием процессов, фильтром по базе (`-Base`) и режимом без подтверждения (`-Force`). | +| `clear_1c_cache.bat` | Быстрая очистка кэша 1С двойным кликом: закрывает процессы и удаляет кэш без подтверждений. | + +Linux-скрипты для 1С — в [`../linux/1c/`](../linux/1c/). diff --git a/windows/Replace-1C-Ibases.ps1 b/1c/Replace-1C-Ibases.ps1 similarity index 100% rename from windows/Replace-1C-Ibases.ps1 rename to 1c/Replace-1C-Ibases.ps1 diff --git a/1c/clear_1c_cache.bat b/1c/clear_1c_cache.bat new file mode 100644 index 0000000..1fd3179 --- /dev/null +++ b/1c/clear_1c_cache.bat @@ -0,0 +1,16 @@ +@echo off +chcp 65001 >nul +title Ochistka kesha 1C + +echo Zakryvayu processy 1C... +taskkill /F /IM 1cv8.exe >nul 2>&1 +taskkill /F /IM 1cv8c.exe >nul 2>&1 +taskkill /F /IM 1cv8s.exe >nul 2>&1 + +echo Chishchu kesh... +if exist "%APPDATA%\1C\1cv8" rd /s /q "%APPDATA%\1C\1cv8" +if exist "%LOCALAPPDATA%\1C\1cv8" rd /s /q "%LOCALAPPDATA%\1C\1cv8" + +echo. +echo Gotovo. Kesh peresozdastsya pri sleduyushchem zapuske 1C. +pause diff --git a/README.md b/README.md index aa016fb..da417bc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # scripts -Коллекция скриптов для администрирования инфраструктуры: PostgreSQL для 1С, Windows (1С, RD Gateway, развёртывание), MikroTik RouterOS, Proxmox, мониторинг Zabbix. +Коллекция скриптов для администрирования инфраструктуры: 1С, PostgreSQL для 1С, Windows (RD Gateway, развёртывание), MikroTik RouterOS, Proxmox, мониторинг Zabbix. Сюда консолидировано содержимое репозиториев `RouterOS`, `proxmox` и `win` — теперь всё в одном месте. @@ -10,7 +10,8 @@ | Папка | Содержимое | |---|---| -| [`windows/`](windows/) | PowerShell-скрипты для Windows (1С, RD Gateway) + `oobe/` — автоустановка Windows. | +| [`1c/`](1c/) | Windows-скрипты для 1С:Предприятие (исключения Defender, раздача баз, очистка кэша). | +| [`windows/`](windows/) | PowerShell-скрипты для Windows (RD Gateway) + `oobe/` — автоустановка Windows. | | [`pgsql/`](pgsql/) | PostgreSQL / Postgres Pro: установка, бэкапы, отказоустойчивость (`failover/`, `pgpro/`). | | [`routeros/`](routeros/) | Скрипты и конфиги MikroTik RouterOS + `docs/` (Obsidian-документация). | | [`proxmox/`](proxmox/) | Скрипты для Proxmox VE. | diff --git a/windows/README.md b/windows/README.md index 3666559..131e860 100644 --- a/windows/README.md +++ b/windows/README.md @@ -1,13 +1,12 @@ # windows/ -PowerShell-скрипты для Windows (1С, RD Gateway) и автоустановка Windows. +PowerShell-скрипты для Windows (RD Gateway) и автоустановка Windows. + +Скрипты для 1С вынесены в [`1c/`](../1c/). | Скрипт | Назначение | |---|---| -| `1CDefenderExclusion.ps1` | Добавляет исключения 1С в Windows Defender: каталоги платформы и файловых баз (из `ibases.v8i` всех профилей), расширения и процессы. Запуск от администратора. | -| `Replace-1C-Ibases.ps1` | Раздаёт эталонный `ibases.v8i` (список баз 1С) пользователям группы `1C_all` с бэкапом старых файлов. Интерактивный выбор пользователей. | | `Update-RDGWCertificate.ps1` | Получение/продление сертификата Let's Encrypt через Posh-ACME (DNS-плагин Beget) и установка на RD Gateway. Для планировщика: одно задание раз в сутки с наивысшими правами. Сохранять в UTF-8 with BOM. | -| `1CDefenderExclusion.bat` | Лаунчер для `1CDefenderExclusion.ps1` (запуск двойным кликом). | ## oobe/