Очистить кэш пользователя на сервере windows

Довольно частая проблема, с которой сталкиваются администраторы терминальных (RDS) ферм Windows Server – нехватка места на системном диске, вызванная большим размером пользовательских данных. В этой статье мы покажем, как настроить автоматическую очистку корзины, папки Загрузки (Downloads), временных папок Temp и папок кэша пользователей в Windows с помощью PowerShell скриптов и групповых политик.

Содержание:

  • Автоматическая очистка папок Temp и Downloads с помощью Windows Storage Space
  • Очистка корзины пользователей Windows
  • PowerShell скрипт для очистки папок Temp, Downloads, кэша в профиле пользователя

Автоматическая очистка папок Temp и Downloads с помощью Windows Storage Space

В Windows Server 2019/2022 и Windows 10/11 вы можете использовать встроенную функцию Storage Sense (Контроль памяти) для автоматически удаления старых и временных файлов. Для нее есть отдельные параметры GPO, которые позволяют включить очистку папок Temp и Downloads.

очистка диска в Windows с помощью Storage Sense

Очистка корзины пользователей Windows

На хосте Windows по умолчанию включена корзина для удаленных файлов (
$Recycle.Bin
). На RDS хосте в этом каталоге будет находится индивидуальная папка корзины для каждого пользователя (с SID пользователя в качестве имени). Со временем вы заметите, что суммарный размер файлов в корзине всех пользователей станет занимать значительную часть места диска RDS сервера.

По умолчанию размер корзины в Windows составляет около 5% от размера диска. Вы можете изменить максимальный размер корзины на каждом диске в ее свойствах. Здесь же можно полностью отключить корзину с помощью опции Don’t move files to the Recycle Bin.

Однако это изменит настройки корзины только для текущего пользователя.

Вы можете задать максимальный размер корзины для пользователей через параметр групповой политики Maximum recycle bin size allowed в разделе User Configuration -> Administrative Templates -> Windows Components -> File Explorer. Максимальный размер корзины задается в процентах от размер диска. Если задать здесь 0, корзина будет отключена для всех дисков.

Изменить настройки корзины через GPO

Для очистки корзины в Windows можно использовать командлет Clear-RecycleBin (доступен начиная с версии PowerShell 5.1 в Win 10). Для очистки корзины без запроса, выполните команду:

Clear-RecycleBin -Force

При запуске этой команды на RDS сервере от имени простого пользователя, будет очищена только корзина текущего пользователя. Можно добавить эту команду в логоф скрипт GPO, чтобы корзина очищалась при выходе пользователя:

%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command Clear-RecycleBin -Confirm:$false

Для предыдущих версий Windows (со старыми версиями PowerShell) можно использовать такой скрипт:

$Shell = New-Object -ComObject Shell.Application
$RecycleBin = $Shell.Namespace(0xA)
$RecycleBin.Items() | %{Remove-Item $_.Path -Recurse -Confirm:$false}

PowerShell скрипт для очистки папок Temp, Downloads, кэша в профиле пользователя

Рассмотрим небольшой PowerShell скрипт для очистки содержимого папок Temp, Downloads и некоторых других временных папок в профиле пользователя на RDS или обычном компьютере Windows.

Комментарии к скрипту:

  • В этом примере мы будем удалять файлы старше 14 дней в папке Downloads (вы можете изменить эту настройку). Остальные папки с кэшем и временными файлами очищаются полностью;
  • Скрипт предназначен для запуска от имени текущего пользователя (скрипт удаляет старые файлы при выходе пользователя из Windows и запускается как GPO логофф скрипт);
  • Всю информацию об удаленных файлах будет сохраняться в текстовый лог файл (можно отключить после отладки скрипта на тестовых пользователях);
  • Дополнительно очищаем кэш RDP;
  • Выполняется очистка каталога с ошибками Windows Error Reporting (WER) в профиле пользователя;
  • В скрипте закомментированы строки очистки кэша Google Chrome. Если пользователи используют его и кэш Chrome занимает много места, раскоментируйте строки с путями;
  • Вы можете добавить в скрипт дополнителен операцию проверки текущего размера папки с профилем пользователя до очистки и после (позволяет получить более точную информацию, но выполняется медленно). Либо можно просто проверить свободное место на диске до и после (выполняется мгновенно).

# Скрипт можно использовать для очистки папок в профиле пользователя (кэш, temp, downloads,кэш google chrome)
# PowerShell скрипт запускается из-под пользователя (права администратора) не требуются. Очищаются только временные файлы и кэш текущего пользователя.
# Оптимально для запуска через логофф скрипт GPO или через планировщик Task Scheduler  
# Можно использовать на RDS хостах, VDI или рабочих станциях для очистки профилей пользователей
# Рекомендуем сначала протестировать работу скрипта в вашем окружении, и после этого удалить опцию WhatIf для физического удаления файлов
$Logfile = "$env:USERPROFILE\cleanup_profile_script.log"
$OldFilesData = (get-date).adddays(-14)
# Полная очистка каталогов с кэшем
[array] $clear_paths = (
'AppData\Local\Temp',
'AppData\Local\Microsoft\Terminal Server Client\Cache',
'AppData\Local\Microsoft\Windows\WER',
'AppData\Local\Microsoft\Windows\AppCache',
'AppData\Local\CrashDumps'
#'AppData\Local\Google\Chrome\User Data\Default\Cache',
#'AppData\Local\Google\Chrome\User Data\Default\Cache2\entries',
#'AppData\Local\Google\Chrome\User Data\Default\Cookies',
#'AppData\Local\Google\Chrome\User Data\Default\Media Cache',
#'AppData\Local\Google\Chrome\User Data\Default\Cookies-Journal'
)
# Каталоги, в которых удаляются только старые файлы
[array] $clear_old_paths = (

'Downloads'
)
function WriteLog
{
Param ([string]$LogString)
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
$LogMessage = "$Stamp $LogString"
Add-content $LogFile -value $LogMessage
}
WriteLog "Starting profile cleanup script"
# если вы хотите очистить каталог с кэшем Google Chrome, нужно  остановить процесс chrome.exe
$currentuser=$env:UserDomain + "\"+ $env:UserName
WriteLog  "Stopping Chrome.exe Process for $currentuser"
Get-Process -name chrome -ErrorAction SilentlyContinue| ? {$_.SI -eq (Get-Process -PID $PID).SessionId} | Stop-Process
Start-Sleep -Seconds 5
# очистка каталогов с кэшем
ForEach ($path In $clear_paths)
{
If ((Test-Path -Path "$env:USERPROFILE\$path") -eq $true)
{
WriteLog "Clearing $env:USERPROFILE\$path"
Remove-Item -Path "$env:USERPROFILE\$path" -Recurse -Force -ErrorAction SilentlyContinue -whatif  -Verbose 4>&1 | Add-Content $Logfile
}
}
# удаление старых файлов
ForEach ($path_old In $clear_old_paths)
{
If ((Test-Path -Path "$env:USERPROFILE\$path_old") -eq $true)
{
WriteLog "Clearing $env:USERPROFILE\$path_old"
Get-ChildItem -Path "$env:USERPROFILE\$path_old" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {($_.LastWriteTime -lt $OldFilesData )} | Remove-Item  -Recurse -Force -ErrorAction SilentlyContinue -whatif  -Verbose 4>&1 | Add-Content $Logfile
}
}
WriteLog "End profile cleanup script"

По аналогии вы можете добавить в массив
$clear_paths
другие папки, которые вам нужно очищать в профиле пользователя.

Данный PowerShell скрипт можно выполнять при завершении сессии пользователя на RDS сервере. Проще всего назначить скрипт через logoff политику GPO.

  1. Создайте новую GPO и назначьте ее на OU, в котором находятся ваши RDS хосты;
  2. В настройках политики включите Режим замыкания групповой политики (Loopback Processing mode). То нужно чтобы к применить настройки из секции пользователей к компьютеру;
    включить режим замыкания gpo

  3. Скопируйте файл PowerShell скрипта на контроллер домена в каталог Netlogon (
    \\winitpro.ru\netlogon\CleanupUserProfile.ps1
    ) ;
  4. Перейдите в раздел GPO User Configuration -> Policies -> Windows Settings -> Scripts -> Logoff. Перейдите на вкладку PowerShell Scripts и добавьте путь к PS1 файлу в Netlogon;
    запуск логоф скрипта PowerShell через групповые политики

  5. Чтобы применить новые настройки GPO, выполните выход пользователя из Windows;
  6. Теперь при завершении сеанса пользователя на RDS сервере указанные каталоги будут автоматически очищаться. Вы можете проверить список удаленных файлов и каталогов в текстовом лог файле в профиле пользователя.

текстовый лог файл с историей очистки профиля пользователя

Рассмотренные здесь методы очистки пользовательских папок можно использовать как для локально хранящихся профилей пользователей, так и контейнеров User Profile Disks или FSlogix профилей на Windows Server RDSH. Также эффективно будет просто исключить временные папки из перемещаемых профилей.

Windows Server RDS farm administrators are often faced with the problem of running out of space on a system drive due to a large amount of user data. This article shows you how to use PowerShell and Group Policies to automatically clean up the Recycle Bin, Downloads, Temp, and Cache folders in the user profiles on Windows.

Contents:

  • Automatically Cleanup Temp and Download Folders with Windows Storage Space
  • How to Empty the Recycle Bin for Windows Users?
  • Clear Cache, Temp, and Downloads Folders in the User Profile with PowerShell

Automatically Cleanup Temp and Download Folders with Windows Storage Space

You can use the built-in Storage Sense feature to automatically delete old and temporary files on Windows Server 2019/2022 and Windows 10/11. It has special GPO options that allow you to clean up Temp and Downloads folders.

Storage Space - delete temporary files

How to Empty the Recycle Bin for Windows Users?

By default, the Recycle Bin folder  ($Recycle.Bin) for deleted files is enabled on a Windows host. An individual Recycle Bin folder is created for each user in this directory (with the user’s SID as the name) on the RDS server. Over time, you will find that the total file size in the recycle bins of all users will take up a significant amount of disk space on the RDS host.

The default size of the Recycle Bin in Windows is about 5% of the disk size. You can change the maximum size of the Recycle Bin on each drive in its properties. Here you can also disable the Recycle Bin completely using the Don’t move files to the Recycle Bin option. However, this will only change the recycle bin settings for the current user.

You may set the maximum Recycle Bin size for users with the Maximum allowed recycle bin size GPO option under User Configuration -> Administrative Templates -> Windows Components -> File Explorer. The maximum Recycle Bin size is set as a percentage of your disk size. Setting this to 0 disables the recycle bin on all drives.

GPO: Maximum recycle bin size allowed

To clear the Recycle bin in Windows, you can use the Clear-RecycleBin cmdlet (available in PowerShell 5.1 and newer on Windows 10). In order to empty the Recycle Bin without prompting, run the following command:

Clear-RecycleBin -Force

If you run this command as a common user on an RDS host, only the recycle bin of the current user will be cleared. You can add this command to your GPO logoff scripts to clear the recycle bin when a user signs out:

%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command Clear-RecycleBin -Confirm:$false

For previous versions of Windows (with older versions of PowerShell), you can use the following code to clean up the RecycleBin:

$Shell = New-Object -ComObject Shell.Application
$RecycleBin = $Shell.Namespace(0xA)
$RecycleBin.Items() | %{Remove-Item $_.Path -Recurse -Confirm:$false}

Clear Cache, Temp, and Downloads Folders in the User Profile with PowerShell

Let’s consider a PowerShell script to clean up Temp, Downloads, and some other temporary folders in a user profile on a Windows Server RDS or a desktop computer running Windows 10/11.

Script comments:

  • In this example, we will delete files older than 14 days in the Downloads folder (you can change this option). Other folders with cache and temporary files will be completely empty;
  • The script runs in the current user context (the script deletes old files when a user logs out from Windows and runs as a GPO logoff script);

    If used in an RDS environment, ensure that users click the Logout/Login button to end their sessions. We also recommend configuring RDS session timeouts to end sessions after a period of inactivity automatically.

  • All information about deleted files will be saved to a text log file (you can disable this after debugging the script on test users);
  • It will also clean up the RDP connection history and cache;
  • The Windows Error Reporting (WER) folder in a user profile is cleaned;
  • The lines that clear the Google Chrome cache are commented out in the script. If your users use it and the Chrome cache takes up a lot of space, uncomment the lines with the paths;
  • You can add an extra operation to check the current size of the user profile folder before and after the cleanup (it allows you to get more accurate information, but takes some time). Or you can simply check the free disk space before and after (it is done quickly).
# You can use this script to clean folders in a user profile (cache, temp, downloads, google chrome cache) on RDS hosts, VDIs, or workstations
# Run the PowerShell script under a commaon user account (no administrator privileges are required). Only temporary files and the current user's cache are deleted.
# You can run this script via GPO (logoff script) or with the Task Scheduler
# Test the script in your environment and then remove the WhatIf option to permanently delete files
$Logfile = "$env:USERPROFILE\cleanup_profile_script.log"
$OldFilesData = (Get-Date).AddDays(-14)
# Complete cleanup of cache folders
[array] $clear_paths = (
    'AppData\Local\Temp',
    'AppData\Local\Microsoft\Terminal Server Client\Cache',
    'AppData\Local\Microsoft\Windows\WER',
    'AppData\Local\Microsoft\Windows\AppCache',
    'AppData\Local\CrashDumps'
    #'AppData\Local\Google\Chrome\User Data\Default\Cache',
    #'AppData\Local\Google\Chrome\User Data\Default\Cache2\entries',
    #'AppData\Local\Google\Chrome\User Data\Default\Cookies',
    #'AppData\Local\Google\Chrome\User Data\Default\Media Cache',
    #'AppData\Local\Google\Chrome\User Data\Default\Cookies-Journal'
)
# Folders where only old files should be removed
[array] $clear_old_paths = (
    'Downloads'
)
function WriteLog {
    Param ([string]$LogString)
    $Stamp = (Get-Date).ToString("yyyy/MM/dd HH:mm:ss")
    $LogMessage = "$Stamp $LogString"
    Add-content $LogFile -value $LogMessage
}
WriteLog "Starting profile cleanup script"
# If you want to clear the Google Chrome cache folder, stop the chrome.exe process
$currentuser = $env:UserDomain + "\"+ $env:UserName
WriteLog "Stopping Chrome.exe Process for $currentuser"
Get-Process -Name chrome -ErrorAction SilentlyContinue | Where-Object {$_.SI -eq (Get-Process -PID $PID).SessionId} | Stop-Process
Start-Sleep -Seconds 5
# Clean up cache folders
ForEach ($path In $clear_paths) {
    If ((Test-Path -Path "$env:USERPROFILE\$path") -eq $true) {
        WriteLog "Clearing $env:USERPROFILE\$path"
        Remove-Item -Path "$env:USERPROFILE\$path" -Recurse -Force -ErrorAction SilentlyContinue -WhatIf -Verbose 4>&1 | Add-Content $Logfile
    }
}
# Delete old files 
ForEach ($path_old In $clear_old_paths) {
    If ((Test-Path -Path "$env:USERPROFILE\$path_old") -eq $true) {
        WriteLog "Clearing $env:USERPROFILE\$path_old"
        Get-ChildItem -Path "$env:USERPROFILE\$path_old" -Recurse -Force -ErrorAction SilentlyContinue | Where-Object {($_.LastWriteTime -lt $OldFilesData)} | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -WhatIf -Verbose 4>&1 | Add-Content $Logfile
    }
}
WriteLog "End profile cleanup script"

Similarly, you can add other folders you want to clear in a user profile to $clear_paths .

This PowerShell script can run when the user’s RDP server session ends. The easiest way to assign a script is to use the logoff GPO policy.

  1. Create a new GPO and assign it to the Organization Unit (OU) in which your RDS hosts are located;
  2. Enable the option Configure user Group Policy Loopback Processing mode. This is necessary to apply the settings from the Users section to the computer;
    enable gpo loopback processing

  3. Copy the PowerShell script file to the Net logon folder on your domain controller (\\woshub.com\netlogon\CleanupUserProfile.ps1);
  4. Go to the GPO section User Configuration -> Policies -> Windows Settings -> Scripts -> Logoff. Open the PowerShell Scripts tab and add a UNC path to the PS1 file in Netlogon;
  5. GPO: run powershell script at logoff

    Log off the user from Windows to apply the new GPO settings;

  6. When ending a user session on an RDS server, the specified folders will be cleared automatically. You can view a list of deleted files and folders in a text log file in a user profile.

profile cleanup log

The user folder cleanup methods discussed here can be applied to both locally stored user profiles and User Profile Disks or FSlogix profile containers on Windows Server RDSH.

или «Произошла внутренняя ошибка» при подключении к RDP — что делать?

Встроенный RDP клиент в операционной систем Windows хранит кэш картинок и шрифто, историю подключений и прочее. Иногда из-за переполнения кэша или истории может возникать вот такая ошибка.

Исправить эту ошибку не сложно.

Надо очистить кэш RDP и реестр

Для этого необходимо запустить редактор реестра regedit.exe, и выполнить очистку следующий веток реестра:

HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers

Также необходимо очистить папку с кэшем Bitmap:

C:\Users\%имя пользователя%\AppData\Local\Microsoft\Terminal Server Client\Cache

в ней храниться тот самый кэш растровых изображений. В целом его лучше вообще не хранить, для этого надо скачать ярлык для подключения к RDP снашего сайта, где внесены оптимальные настройки, в том числе убрана эта опция. Так безопаснее, так как в этот кэш может попасть личная информация с экрана вашего монитора.

Скачайте готовый скрипт для очистки кэша

На терминальном сервере работает 30 пользователей, после очередного обновления перестал работать Word, Excel и 1C у некоторых пользователей выборочно. Вылетает с ошибкой windows «программа 1cv8c не работает» А у большей части юзеров всё продолжает работать.

5e898b8897bc9793854144.png

Если эту программу запустить от другого пользователя (пкм запуск от другого пользователя), то всё работает. Дело явно в каком то кэше который создается у пользователя. Как его почистить? Может можно как то пересоздать чтоли пользователя? Сбросить все его настройки или сбросить конкретно кэши этих программ? Удалять пользователя и создавать заново не вариант.

Сразу скажу вот это удалить не помогает.
%userprofile%\AppData\Roaming\1C\1Cv8\
%userprofile%\AppData\Local\1C\1Cv8\
У ms office тоже, и даже в реестре чистил ветку — 0 эффекта.

Задача:

На системном диске сервера удаленных рабочих столов заканчивается место. При анализе выявлено, что основные «виновники» — это профили пользователей.

Пользователи по привычке сохраняют файлы и папки на сервере терминалов в свих папках — «Рабочий стол», «Загрузки», «Документы».

Кроме того, сама система и приложения постепенно отнимают место, сохраняя кэши и временные файлы в своих папках в профилях пользователей.


Решение:

Первым делом необходимо провести анализ и выявить какие папки необходимо очищать.

В моем случае это оказались:

  1. Системная временная папка C:\Temp;

  2. Временная папка C:\Windows\Temp;

  3. Корзины C:\$RECYCLE.BIN;

  4. Временные папки пользователей C:\Users\%User%\AppData\Local\Temp;

  5. Временные папки и кэш 1С пользователей:

    • C:\Users\%User%\AppData\Local\1C;

    • C:\Users\%User%\AppData\Roaming\1C\1cv8;

    • C:\Users\%User%\AppData\Roaming\1C\1cv82;

  6. Папки Мои документы пользователей C:\Users\%User%\Documents;

  7. Папки Загрузки пользователей C:\Users\%User%\Downloads;

  8. Папки Рабочий стол пользователей C:\Users\%User%\Desktop;
    В этих папках необходимо оставить (не удалять) все ярлыки (.lnk) и ini-файлы (.ini).

  9. Профили пользователей браузера Google Chrome C:\Users\%User%\AppData\Local\Google;

  10. Папки SolutionPackages пользователей C:\Users\%User%\AppData\Local\Microsoft\Office\SolutionPackages;


Для пользователей, являющихся членами любой из доменных групп Администраторы, Администраторы домена, Администраторы предприятия, Администраторы схемы, необходимо сохранить (не удалять) папки:

  • Папки Мои документы пользователей C:\Users\%User%\Documents;

  • Папки Загрузки пользователей C:\Users\%User%\Downloads;

  • Папки Рабочий стол пользователей C:\Users\%User%\Desktop;

  • Профили пользователей браузера Google Chrome C:\Users\%User%\AppData\Local\Google;
    Здесь необходимо очищать только кэш браузера C:\Users\%User%\AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data

  • Папки SolutionPackages пользователей C:\Users\%User%\AppData\Local\Microsoft\Office\SolutionPackages;


В итоге получился вот такой

Код: Выделить всё

@echo off

REM Включаем расширенную обработку команд
Setlocal EnableDelayedExpansion
REM Инициализируем «глобальную» переменную
set currUser=

REM Чистим все корзины
set dirusers=C:\$RECYCLE.BIN\
cd %dirusers%

REM Сначала удаляем все файлы из C:\$RECYCLE.BIN\
del     /s /q %dirusers%\*.*
REM Затем в цикле проходим по дочерним папкам, учитывая то, что папки скрытые
for /f %%a in ('dir /A /B %dirusers%') do (
	REM удаляем все файлы из дочерней папки
	del     /s /q %dirusers%%%a\*.*  
REM удаляем саму папку rd /s /q %dirusers%%%a\ ) REM Чистим системную временную папку set dirusers=C:\Temp\ cd %dirusers% REM Сначала удаляем все файлы из системной временной папки del /s /q %dirusers%\*.* REM Затем в цикле проходим по дочерним папкам for /f %%a in ('dir /b %dirusers%') do ( REM удаляем все файлы из дочерней папки del /s /q %dirusers%%%a\*.*
REM удаляем саму папку rd /s /q %dirusers%%%a\ ) REM Чистим временную папку C:\Windows\Temp\ set dirusers=C:\Windows\Temp\ cd %dirusers% REM Сначала удаляем все файлы из временной папки C:\Windows\Temp\ del /s /q "%dirusers%\*.*" REM Затем в цикле проходим по дочерним папкам for /f %%a in ('dir /b %dirusers%') do ( REM удаляем все файлы из дочерней папки и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем саму папку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\" >>C:\script\Clean_Chrome_Temp.log ) REM Чистим папки профилей пользователей set dirusers=C:\Users\ cd %dirusers% REM В цикле проходим по всем папкам в папке профилей for /f %%a in ('dir /b %dirusers%') do ( REM Записываем в «глобальную» переменную currUser имя текущей дочерней папки Set currUser=%%a REM Записываем имя текущей дочерней папки в журнал Echo !currUser! >>C:\script\Clean_Chrome_Temp.log REM Удаляем все файлы из подпапки временных файлов текущей папки профиля пользователя и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Temp\*.*" >>C:\script\Clean_Chrome_Temp.log REM В цикле проходим по всем папкам в подпапке временных файлов for /f %%c in ('dir /b %dirusers%%%a\AppData\Local\Temp') do ( REM удаляем все файлы из дочерней подпапки временных файлов и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Temp\%%c\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем саму подпапку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\AppData\Local\Temp\%%c" >>C:\script\Clean_Chrome_Temp.log ) REM Чистим временные папки, файлы и кэш 1С текущей папки профиля пользователя и записываем результаты удаления в журнал del /s /q %dirusers%%%a\AppData\Local\1C\*.* >>C:\script\Clean_Chrome_Temp.log rd /s /q %dirusers%%%a\AppData\Local\1C\ >>C:\script\Clean_Chrome_Temp.log del /s /q %dirusers%%%a\AppData\Roaming\1C\1cv8\*.* >>C:\script\Clean_Chrome_Temp.log rd /s /q %dirusers%%%a\AppData\Roaming\1C\1cv8\ >>C:\script\Clean_Chrome_Temp.log del /s /q %dirusers%%%a\AppData\Roaming\1C\1cv82\*.* >>C:\script\Clean_Chrome_Temp.log rd /s /q %dirusers%%%a\AppData\Roaming\1C\1cv82\ >>C:\script\Clean_Chrome_Temp.log REM Если папка пользователя создана с доменным суффиксом, то удаяем этот суффикс из переменной REM Это понадобится для поиска сопоставлений названий папок именам доменных пользователей Set currUser=!currUser:.corp=! REM Делаем исключения для папок, в которых не нужно чистить рабочий стол, загрузки и документы. REM Для этого присваиваем переменной currUser вместо названия текущей папки значение Root REM так как Root входит в группу доменных администраторов, а в таких папки мы будем очищать REM только кэш браузера Google Chrome IF !currUser!==Public set currUser=Root IF !currUser!==Default set currUser=Root IF !currUser!=="Default User" set currUser=Root IF !currUser!==ksnproxy set currUser=Root REM Так же делаем исключения для папок локальных администраторов, присваивая переменной currUser REM значение Root. Папки локальных администраторов определяем по содержанию в их названии слова REM «Администратор» echo !currUser! | find /i "Ђ¤¬Ё­Ёбва в®а" IF NOT ERRORLEVEL 1 set currUser=Root REM Выполняем поиск сопоставления значения переменной currUser (которая содержит название текущей папки, REM либо Root) именам доменных пользователей и отбираем те из них, которые не являются членами доменных REM групп Администраторов (Администраторы, Администраторы домена, Администраторы предприятия, Администраторы схемы и т.д) net user !currUser! /DOMAIN | find /i "Ђ¤¬Ё­Ёбва в®ал" REM Если имеем дело с обычным пользователем, то выполняем чистку IF ERRORLEVEL 1 ( REM Удаляем файлы из папки Documents текущей папки профиля пользователя и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\Documents\*.*" >>C:\script\Clean_Chrome_Temp.log REM В цикле проходим по всем подпапкам в папке Documents for /f %%c in ('dir /b %dirusers%%%a\Documents') do ( REM удаляем все файлы из текущей дочерней подпапки Documents и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\Documents\%%c\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем текущую подпапку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\Documents\%%c" >>C:\script\Clean_Chrome_Temp.log ) REM Удаляем файлы из папки Downloads текущей папки профиля пользователя и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\Downloads\*.*" >>C:\script\Clean_Chrome_Temp.log REM В цикле проходим по всем подпапкам в папке Documents for /f %%c in ('dir /b %dirusers%%%a\Downloads') do ( REM удаляем все файлы из текущей дочерней подпапки Downloads и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\Downloads\%%c\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем текущую подпапку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\Downloads\%%c" >>C:\script\Clean_Chrome_Temp.log ) REM Удаляем все файлы, за исключением файлов с расширениями .lnk и .iniиз папки Desktop текущей папки профиля REM пользователя и записываем результаты удаления в журнал for /F "eol=: delims=" %%F in ('dir %dirusers%%%a\Desktop\ /s /b /a-d ^| findstr /vile ".lnk .ini"') do if "%%~fF" neq "%~f0" del "%%F" >>C:\script\Clean_Chrome_Temp.log REM В цикле проходим по всем подпапкам в папке Desktop for /f %%c in ('dir /b %dirusers%%%a\Desktop') do ( REM удаляем все файлы из текущей дочерней подпапки Desktop и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\Desktop\%%c\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем текущую подпапку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\Desktop\%%c" >>C:\script\Clean_Chrome_Temp.log ) REM Удаляем файлы из папки Google текущей папки профиля пользователя и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Google\*.*" >>C:\script\Clean_Chrome_Temp.log REM В цикле проходим по всем подпапкам в папке Google for /f %%c in ('dir /b %dirusers%%%a\AppData\Local\Google') do ( REM удаляем все файлы из текущей дочерней подпапки Google и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Google\%%c\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем текущую подпапку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\AppData\Local\Google\%%c" >>C:\script\Clean_Chrome_Temp.log ) REM Удаляем файлы из папки SolutionPackages текущей папки профиля пользователя и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Microsoft\Office\SolutionPackages\*.*" >>C:\script\Clean_Chrome_Temp.log REM В цикле проходим по всем подпапкам в папке SolutionPackages for /f %%c in ('dir /b %dirusers%%%a\AppData\Local\Microsoft\Office\SolutionPackages') do ( REM удаляем все файлы из текущей дочерней подпапки SolutionPackages и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Microsoft\Office\SolutionPackages\%%c\*.*" >>C:\script\Clean_Chrome_Temp.log REM удаляем текущую подпапку и записываем результаты удаления в журнал rd /s /q "%dirusers%%%a\AppData\Local\Microsoft\Office\SolutionPackages\%%c" >>C:\script\Clean_Chrome_Temp.log ) REM Следующий блок выборочной чистки выполняется для профилей Администраторов ) ELSE ( REM Чистим папку кэша браузера Google Chrome и записываем результаты удаления в журнал del /s /q "%dirusers%%%a\AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data\"* >>C:\script\Clean_Chrome_Temp.log ) ) REM Поскольку файл журнал получается достаточно большой, то запаковываем его в архив, удаляя оригинальный файл журнала. В архиве будут REM храниться 90 последних журналов "C:\Program Files\WinRAR\Rar.exe" a -df -ep -m5 -rr5 -tsmca -ver90 C:\script\Clean_Chrome_Temp.rar C:\script\Clean_Chrome_Temp.log

Сценарий снабжен очень внятными комментариями, поэтому дополнительно разбирать его действия не имеет смысла.

Скачать архив с файлом сценария можно здесь:


В дополнение можно настроить групповые политики на полное удаление профилей пользователей, не входивших в систему указанное количество дней:

2024-09-18_20-11-53.png

Политика находится по адресу: «Конфигурация компьютера» —> «Административные шаблоны» —> «Система» —> «Профили пользователей» —> «Удалять при перезагрузке системы профили пользователей по истечении указанного числа дней».

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Последний релиз windows 11 pro
  • Как установить elementary os вместе с windows
  • Защита файлов паролем windows 10
  • Установочный диск windows 7 домашняя расширенная
  • Как открыть dns сервер windows 10