PowerShell Рекурсивная очистка временных файлов пользователей

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.