Прежде всего вы должны использовать robocopy
для чего-то подобного.Он имеет переключатели, которые, вероятно, обрабатывают ваш запрос:
/ e Копирует подкаталоги.Обратите внимание, что эта опция включает пустые каталоги.Для получения дополнительной информации см. Примечания.
/ maxage: задает максимальный возраст файла (исключая файлы старше N дней или даты).
/ l Указывает, что файлы должны быть указаны только (и не копируется, не удаляется или не имеет отметки времени).
Итак, зная, что я бы начал экспериментировать с robocopy $source $destination /e /maxage:30 /l
, в котором должны отображаться все файлы в дереве каталогов, которые были изменены за последние 30 дней./maxage
может быть не тот переключатель, который вы ищете, но это справедливое предположение.
Проблема с вашей текущей логикой, вероятно, заключается в том, что Get-ChildItem $source -Recurse
будет возвращать папки и файлы.Таким образом, вы можете передать папку в Copy-Item
, откуда поступают все дополнительные файлы.Вы должны быть в состоянии смягчить это с помощью переключателя -File
.
Get-ChildItem $source -Recurse -File