Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2012/2012 R2 » 2012 R2 - [решено] Удаление файлов старше 100 дней

Ответить
Настройки темы
2012 R2 - [решено] Удаление файлов старше 100 дней

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день, дорогие коллеги!

Подскажите, как лучше реализовать удаление файлов старше 100 дней в неком каталоге?
Есть ли встроенные средства с графической оболочкой, или это достигается только скриптами?

Отправлено: 15:09, 06-06-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Есть ли встроенные средства с графической оболочкой »
Может уже и есть. На WSH устроит?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:45, 06-06-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 112
Благодарности: 20

Профиль | Отправить PM | Цитировать


DJ Mogarych,
я вот так вот реализовывал через планировщик. Может немного криво, за то работает.

Очистка некой папки ( EXCHANGE ). Файлы старше 60 дней помещеються в папку !НА УДАЛЕНИЕ!, а файлы старше 70 дней удаляются из !НА УДАЛЕНИЕ!? формирование отчёта и отправка его на почту.

Код: Выделить весь код
# переменная даты
$Date = Get-Date -Format yyyy-MM-dd

#Запускаем запись лога
Start-Transcript -path "D:\DATA\PUBLIC\DEPT\IT\LOGs\ClearFolderLog_$Date.txt"

# Переменные конечной папки
$TargetFolder = "D:\DATA\PUBLIC\( ExCHANGE )"
# переменная папки временного содержания
$ForDelete = "D:\DATA\PUBLIC\( ExCHANGE )\!НА УДАЛЕНИЕ!"
# переменная исключений
$exclude = @("*!!!*", "!НА УДАЛЕНИЕ!", "*.lnk")
# переменная, чтобы исключить обработку папок и файлов перечисленных в исключениях

# Переход в исходную папку
####cd "$TargetFolder"

$Target = Get-ChildItem -Path $TargetFolder -Exclude $exclude
#Переменные времени
$minus60 = (Get-Date).AddDays(-60)
$minus70 = (Get-Date).AddDays(-70)

Write-Host ""
Write-Host "====================== Перемещение в папку $ForDelete ==========================="

# Перемещение объектов из целевой папки старше 60 дней в папку временного содержания
$ListObjects = (Get-ChildItem -Path $Target -Recurse | `
     Where-Object {(!$_.PSisContainer) -and ($_.lastwritetime -lt $minus60) -and ($_.CreationTime -lt $minus60)}).FullName
Foreach ($Objects in $ListObjects) { 
     Write-Host "Перемещение объекта $Objects в папку $ForDelete" -foregroundcolor "Yellow"; `
     Move-Item -Path $Objects -Destination $ForDelete -Force
     }

Write-Host ""
Write-Host "================= Удаление объектов из папки $ForDelete =========================="

# Удаление объектов из папки временного содержания старше 70 дней
$ListObjDel = (Get-ChildItem -Path $ForDelete -Recurse |`
     Where-Object {($_.lastwritetime -lt $minus70) -and ($_.CreationTime -lt $minus70)}).FullName
ForEach ($ObjDel in $ListObjDel) {
	Write-Host "Удаление обекта $ObjDel" -foregroundcolor "Green"; `
    Remove-Item -Path $ObjDel -Recurse -Force
	}
	
#останавливаем запись лога
Stop-Transcript

# ==================================================================================

# удаление пустых папок из целевой папки

Get-ChildItem -Path $TargetFolder -Exclude $exclude -Recurse | Where-Object {$_.psiscontainer -eq “true”} | `
    ForEach {`
        if (Get-Childitem $_.FullName) {} else {Remove-Item $_.FullName
        }
    }

# ============================ ОТПРАВКА ОТЧЕТА ПО пОЧТЕ ===========================

# Ищем файлы последние за сутки
$CurrentDate = Get-Date -UFormat "%Y-%m-%d"
# $CurrentDate
$ListFile = Get-ChildItem "D:\DATA\PUBLIC\DEPT\IT\LOGs\*" -include *.txt -recurse | Where-Object{ $_.LastWriteTime -gt $CurrentDate }
#$ListFile

# Создаем почтовое сообщение
$mail = New-Object System.Net.Mail.MailMessage

# Устанавливаем соединение
$mail.From = New-Object System.Net.Mail.MailAddress("noreply@domain.kz")
$mail.To.Add("support@domain.kz" )

# Устанавливаем тему сообщения
$mail.Subject = "Repport Clear ( ExCHANGE ) folder";
# Создаем тело сообщения из файла
$mail.Body = "Отчет об очистке папки \\domain.kz\Shared\PUBLIC\( ExCHANGE )\"

# Приаттачиваем файлы
foreach ($File in ($ListFile))
    {
        $Attachment = New-Object System.Net.Mail.Attachment ($File)
        $mail.Attachments.Add($Attachment)
    }

# Создаем почтовое сообщение
$smtp = New-Object System.Net.Mail.SmtpClient
# Указываем хост через который будем отправлять
$smtp.host = "mail.domain.kz"

# Задаем пользователя от имени которого будет происходить отправка
$Credentials = new-object System.Net.networkCredential
$Credentials.domain = "DOMAIN"
$Credentials.UserName = "noreply"
$Credentials.Password = "Service@cc0unt"
$smtp.Credentials = $Credentials

# Отправка
$smtp.Send($mail)
ЕСЛИ КТО УЛУЧШИТ СКРИПТ БУДУ БЛАГОДАРЕН.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:50, 06-06-2014 | #3


Ветеран


Сообщения: 1496
Благодарности: 384

Профиль | Отправить PM | Цитировать


Может, это как-то поможет: http://technet.microsoft.com/en-us/l.../dd759233.aspx

-------
Microsoft Certified Trainer; Cisco Certified Systems Instructor; Certified EC-Council Instructor; Certified Ethical Hacker v8.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:52, 06-06-2014 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Ну, вот и нашлось .

Отправлено: 16:41, 06-06-2014 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Дорогие коллеги, я вам крайне благодарен!
WindowsNT, а ведь я теперь припоминаю из микрософтовских экзаменов про File Management Tasks... Теория без практики мертва!

А я ещё вспомнил про Robocopy, и оно встроено в Windows. Тоже наверняка можно эту задачу реализовать.
Ещё раз спасибо, инцидент исперчен.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 22:13, 06-06-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Теория без практики мертва! »
Хуже того: ты можешь много лет знать все составляющие, но сделать один, последний шаг — тебе вот как-то не хватает тямы. Яркая иллюстрация.

Отправлено: 02:16, 07-06-2014 | #7



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2012/2012 R2 » 2012 R2 - [решено] Удаление файлов старше 100 дней

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Удаление файлов старше N дней DOCznet Скриптовые языки администрирования Windows 2 27-09-2012 11:42
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. Joni Скриптовые языки администрирования Windows 6 11-07-2012 11:18
VBS/WSH/JS - [решено] Удаление файлов по сети старше 7 дней, оставлять не менее 10 файлов white155 Скриптовые языки администрирования Windows 6 04-01-2012 00:42
[решено] Автоочистка файлов, старше 5 дней. Universal_gr Программное обеспечение Linux и FreeBSD 1 01-10-2010 01:12
Прочее - удаление файлов старше 10 дней admin666 Общий по Linux 1 23-07-2009 19:09




 
Переход