Небольшой скрипт на PowerShell для очистки папки «Загрузки» на терминальном сервере.
Данный скрипт проходиться по всем пользователям терминального сервера в папки «Загрузки» и удаляет файлы старше 30 дней.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# Задаем путь к файлу лога $logFile = "C:\Logs\DownloadCleanup_$(Get-Date -Format 'yyyyMMdd').log" # Открываем лог-файл или создаем новый, если он не существует $logStream = [System.IO.StreamWriter]::new($logFile, $true) # Записываем текущую дату и время в лог-файл $logStream.WriteLine("[$(Get-Date)] Running the script for cleaning the downloads folder.") try { # Получаем список профилей пользователей $userProfiles = Get-ChildItem -Path "C:\Users" -Directory | Select-Object -ExpandProperty Name foreach ($profile in $userProfiles) { # Формируем полный путь к папке загрузок в текущем профиле $profileDownloadsFolder = Join-Path -Path "C:\Users" -ChildPath ($profile + "\Downloads") # Выводим список полученных папок $logStream.WriteLine("$profileDownloadsFolder") # Проверяем, существует ли папка загрузок в текущем профиле if (Test-Path $profileDownloadsFolder) { # Получаем список файлов в папке загрузок $files = Get-ChildItem -Path $profileDownloadsFolder -File foreach ($file in $files) { # Проверяем, если файл старше 30 дней if ($file.LastWriteTime -lt (Get-Date).AddDays(-30)) { # Удаляем файл Remove-Item -Path $file.FullName -Force # Записываем информацию о удаленном файле в лог-файл $logMessage = "[$(Get-Date)] Delete file: $($file.FullName)" $logStream.WriteLine($logMessage) } } } } # Записываем информацию об успешном завершении скрипта в лог-файл $logStream.WriteLine("[$(Get-Date)] The script for cleaning the downloads folder is completed.") } catch { # Записываем информацию об ошибке в лог-файл $errorMessage = "[$(Get-Date)] Error when executing the script: $_" $logStream.WriteLine($errorMessage) } finally { # Закрываем лог-файл $logStream.Dispose() } |