# Архивация устаревших данных # Архивация данных из одного каталога, в другой по дате последнего изменения # Передать в переменную $sc каталог-источник $sc=$args[0] # Передать в переменную $ds каталог-назначение $ds=$args[1] # Передать в переменную $tl срок актуальности данных (в днях) $tl=$args[2] # Передать в переменную $lg журнал действий $lg=$args[3] # Построить массив данных $s из файлов старше $tl (все файлы, включая системные, исключая дирректории) $s=Get-ChildItem $sc -Filter * -Recurse -Attributes !d,!d+h | where { $_.LastWriteTime -lt (get-date).addDays($tl*(-1)) } # Перместить файлы из массива $s в $d (идентичный каталог $sc в расположении $ds) # Если каталог $d не существует - создать его # Удалить временные файлы (~$.* и Thumbs.db) # Создать запись в журнале для каждого файла (удаление или перемещение) Foreach ($f in $s) { $dt = (get-date -f "yyyy.MM.dd HH:mm:ss") $d=$ds+($f.DirectoryName -ireplace ([regex]::escape($sc)), "") if (!(Test-Path ($d))) { md $d } if ($f -like "~$*" -Or $f -like "Thumbs.db") { Write-Output "${dt}: Delete $f" | Out-File -filepath $lg -encoding "UTF8" -Append Remove-Item $f.FullName -Force -Confirm:$false } else { Write-Output "${dt}: Move $f to $d" | Out-File -filepath $lg -encoding "UTF8" -Append Move-Item $f.FullName $d -Force -Confirm:$false } } # Пример использования: # %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Service\A004.ps1 "D:\FileServer" "X:\Backup" "365" "X:\Log\archive.log" # Где: # "C:\Service\A004.ps1" - путь до скрипта # "D:\FileServer" - раздел с данными # "X:\Backup" - раздел с архивными данными # "365" - срок актуальности данных (в днях) # "X:\Log\archive.log" - журнал с действиями