Суть проблемы:
При использовании MS Outlook на терминальном сервере, Outlook сохраняет временные файлы открытых пользователями вложений сообщений в папку профиля пользователя
"AppDataLocalMicrosoftWindowsTemporary Internet FilesContent.Outlook"
Автоматически эта папка не очищается.
Если пользователей много, а так же приходит много почты с большими вложениями, то со временем эти никому не нужные файлы занимают непомерно много места!
На помощь приходит Powershell!
Решение:
Скрипт который перебирает всех пользователей в родительском каталоге, и рекурсивно отчищает временные файлы каждого из пользователей!
Разумно запускать этот скрипт ночью до бэкапа терминального сервера.
#======================================================================== # Created on: 12.12.2012 20:29 # Created by: administrator # Organization: ITTC # Filename: clean_outlook_content.ps1 # Description: Clean temp files opened in outlook messages #======================================================================== function Get-Tree($Path,$Include='*') { @(Get-ChildItem $Path -Recurse -Include $Include) | sort pspath -Descending -unique } function Remove-Tree($Path,$Include='*') { Get-Tree $Path $Include | Remove-Item -force -recurse } foreach ($LS_Users in ls “C:Users” | ?{$_.psiscontainer -eq “true”}) { $Temp_Outlook_Content = Join-Path $LS_Users.fullname "AppDataLocalMicrosoftWindowsTemporary Internet FilesContent.Outlook" # Get-Tree $Temp_Outlook_Content | select fullname Remove-Tree $Temp_Outlook_Content }
Получился короткий, но очень универсальный скрипт для очистки временных файлов, с перебором дочерних папок родителя! Применений для этого скрипта масса.
Скрипт работает таким образом:
В каждой директории с родителем
“C:Users”
foreach ($LS_Users in ls “C:Users” | ?{$_.psiscontainer -eq “true”})
Выберем все файлы и директории по пути (например)
"C:UsersRDS.UserAppDataLocalMicrosoftWindowsTemporary Internet FilesContent.Outlook"
Строка с кодом
Get-Tree $Temp_Outlook_Content | select fullname
напечатает в консоль что будет удаленно, и необходима только для отладки и тестирования скрипта.
А это строка вызовет функцию Remove-Tree и удалит все папки и файлы.
Remove-Tree $Temp_Outlook_Content