Войти

Показать полную графическую версию : [решено] Сбор информации о файлах измененных до ...


rox33
18-10-2012, 13:47
Добрый день, уважаемые!
Такая проблема:
Есть файловая помойка объёмом под 6 Тб (доменная область обмена), на сервере 2008R2.
Первой задачей является сбор статистики - какие файлы, и сколько их, были изменены более 2 лет назад (изменены до 2010, до 2011 годов)
И выгрузка в csv этой статистики с информацией о имени файла, пути, дате изменения и, если возможно, дате открытия.

Второй задачей будет перемещение всех файлов созданных до 2010/2011 года на резервное хранилище.


Возможно ли решить это на PS?

Заранее спасибо за любую помощь!

Kazun
18-10-2012, 14:10
#1
$date = Get-Date 1.1.2011
$files = Get-ChildItem -Path C:\ -Force -Recurce | Where {!$_.PsIsContainer -and $_.LastWriteTime -le $date}
$files| Select Name,DirectoryName,LastWriteTime,LastAccessTime | Export-Csv -NoType result.csv -Encoding Unicode
#2
$files | Move-Item -Destination "E:\"

rox33
18-10-2012, 15:12
Спасибо, всё заработало (только случайная опечатка в -Force -RecurSe).
И доп. вопрос - как перемещать только те файлы, у которых и время записи ДО 2011 года, и время последнего доступа ДО 2011 года. Т.е. если файл был изменён ДО 2011, а открыт уже после - его не перемещать.
Есть вероятность, что многие программы не корректно записывают в свойства файла время открытия.


ЗЫ добавить в отчёт размер - так :
| Select Name,DirectoryName,LastWriteTime,LastAccessTime,Size |
?
Нашел - параметр Length нужен.

ЗЫЫ Перемещение не проверял, подскажите, как сделать, чтобы оно сохранялось с текущей структурой папок?

Kazun
18-10-2012, 15:51
{!$_.PsIsContainer -and $_.LastWriteTime -le $date -and $_.LastAccessTime -le $date}

" Есть вероятность, что многие программы не корректно записывают в свойства файла время открытия." - Сплошь и рядом,можно вручную легко изменять,что и советует делать Microsoft.

Размер - Length

Move-Item -Destination {md $_.DirectoryName.Replace("C:\","E:\") -force}




© OSzone.net 2001-2012