Очистка кеша в 1C PowerShell
Очистка кеша для всех пользователей на терминальном сервере
Собственно сам скрипт Clean1CCache.ps1:
1 |
Get-ChildItem "C:\Users\*\AppData\Local\1C\1cv8\*","C:\Users\*\AppData\Roaming\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse |
Значения для планировщика заданий:
powershell.exe -noprofile -ExecutionPolicy Bypass -Command C:\Clean1CCache.ps1
также + 1Cv82
1 2 3 |
# Скрипт очистки кэша 1Сv8 PowerShell для всех пользователей сервера (с сохранением настроек пользователей) Get-ChildItem "C:\Users\*\AppData\Local\1C\1Cv82\*","C:\Users\*\AppData\Roaming\1C\1Cv82\*" | Where {$_.Name -as [guid]} | Remove-Item -Force -Recurse Get-ChildItem "C:\Users\*\AppData\Roaming\1C\1cv8\*","C:\Users\*\AppData\Local\1C\1cv8\*" | Where {$_.Name -as [guid]} | Remove-Item -Force -Recurse |
Удаленная очистка кеша для всех пользователей
Все что нам понадобится для решения этой задачи это среда разработки скриптов PowerShell.
Основные моменты:
- Кэш пользователя 1с располагается по следующему пути: “\ИмяКомпьютера\c$\Users\ИмяПользователя\AppData\Local (или Roaming)\1C\1cv8\”
- Удалять будем только файлы, содержащие в наименовании GUID: “15b4a98c-9e79-4f14-b510-970a9999c095”;
- Удаляться будут только те файлы и папки, которые на данный момент пользователь не использует (т.е. не запущена у пользователя база 1с, использующая эти файлы).
Готовые варианты скриптов для решения этой задачи:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#вставляем в буфер обмена значение # Из папки \Local #Удаляем кэш конкретного пользователя с компьютера (по имени компьютера) Get-ChildItem "\\ИМЯ_КОМПЬЮТЕРА\c$\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Local\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse #Удаляем кэш конкретного пользователя с компьютера (по ip компьютера) Get-ChildItem "\\10.11.12.189\c$\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Local\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse #Удаляем кэш всех пользователей с компьютера Get-ChildItem "\\10.11.12.189\c$\Users\*\AppData\Local\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse # Из папки \Roaming #Удаляем кэш конкретного пользователя с компьютера (по имени компьютера) Get-ChildItem "\\ИМЯ_КОМПЬЮТЕРА\c$\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse #Удаляем кэш конкретного пользователя с компьютера (по ip компьютера) Get-ChildItem "\\10.11.12.189\c$\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse #Удаляем кэш всех пользователей с компьютера Get-ChildItem "\\10.11.12.189\c$\Users\*\AppData\Roaming\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse |
Запускаем скрипт прямо из PowerShell и наслаждаемся результатом. Естественно нужно понимать что у компьютера (ОС), с которой запускаются данные скрипты, есть доступы к удаленным машинам и права, которые позволяют ей удалять на них файлы. Если что, решайте вопрос со своим администратором сети – думаю он поможет вам с этим разобраться.
только старше 7 дней
1 |
Get-ChildItem $env:LOCALAPPDATA"\1C\*",$env:APPDATA"\1C\*" -Recurse | Where-Object {$_.Name -as [guid]} | Where-Object {$_.LastWriteTime -le ((Get-Date).adddays(-7))} | Remove-Item -Force -Recurse -ErrorAction 0 |
только для текущего пользователя
1 2 3 |
# Скрипт очистки кэша 1Сv8 PowerShell для текущего пользователя сервера (с сохранением настроек пользователя) Get-ChildItem "$env:HOMEPATH\AppData\Local\1C\1Cv82\*","$env:HOMEPATH\AppData\Roaming\1C\1Cv82\*" | Where {$_.Name -as [guid]} | Remove-Item -Force -Recurse Get-ChildItem "$env:HOMEPATH\AppData\Roaming\1C\1cv8\*","$env:HOMEPATH\AppData\Local\1C\1cv8\*" | Where {$_.Name -as [guid]} | Remove-Item -Force -Recurse |