Суть проблемы:
При использовании 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


