Переместить файлы старше 31 дня на другой диск

Function Move {
  #Moves all files older than 31 days old from the Source folder to the Target 
  Get-Childitem -Path "E:\source" | Where-Object { $_.LastWriteTime -lt (get-date).AddDays(-31)} |
  ForEach {
    Move-Item $_.FullName -destination "F:\target" -force -ErrorAction:SilentlyContinue
  }
}

в исходном каталоге находятся файлы старше 2-3 лет, но когда я запускаю script, ничего не перемещается в целевой каталог?! что не так?

Ответ 1

Я не знаю, имеет ли значение это значение, а не $. он должен быть $_.

Я пробовал этот script, и он отлично работает для меня:

get-childitem -Path "E:\source" |
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "F:\target"

Обратите внимание, что вам не нужен цикл foreach, потому что объекты будут "проложены" в команду move-item

Ответ 2

Также помните о скрытых файлах, попробуйте добавить -Force в Get-ChildItem