Сценарий PowerShell для перемещения файлов и папок, включая подпапки из одного места в другое старше x дней

Я разработал скрипт PowerShell, и он работает отлично. Единственная проблема заключается в том, что файлы в подпапках не перемещаются в пункт назначения.

get-childitem -Path "\\servername\location" |
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} |
    move-item -destination "C:\Dumps"

Я не могу настроить скрипт дальше.

Ответ 1

Используйте -Recurse в команде Get-ChildItem чтобы перейти к файлам в подпапках, а затем переместить их по отдельности, соединив коллекцию с Move-Item

Get-ChildItem -Path "C:\Test" -Recurse |
  Where-Object {$_.LastWriteTime -lt (Get-date).AddDays(-31)} |
  Move-Item -destination "C:\Dumps"

Вот скриншот:

screenshot

Ответ 2

Не тратьте время на то, чтобы изобрести robocopy в PowerShell.

robocopy \\servername\location C:\Dumps /e /mov /minage:31

Ответ 3

Упрощение приведенного выше
robocopy A:\ B:\/MIR/minage:31
Где A:\является вашим источником B:\является вашим пунктом назначения

Ответ 4

Мне понадобился быстрый один лайнер для перемещения всех данных с одного диска на другой. Это отлично сработало для меня:

Get-ChildItem "E:" -Recurse | Move-Item -Destination "G:"

Ответ 5

Можно ли это изменить, чтобы файлы за 90 дней перемещались в другую папку?