$files
является одной строкой.Ваш for
не знает, что это путь или что-то особенное.Похоже, вы рассматриваете его как файловый объект
Если вы хотите перечислить все файлы, вам нужно сначала перечислить эти пути, чтобы ваш цикл мог обрабатывать каждый из них по отдельности.
Примечание: , что в вашем цикле у вас было Move-Item
$ files , которое могло бы испачкать воду.Вы хотели использовать $file
, но это все равно не сработало бы так, как вы ожидали.
foreach ($file in (Get-ChildItem "c:\temp" -Filter "*.pdf")){
try {
# Move all the files
move-item $file -Destination '\\networkShare\Archive\express' -Force
# Output the logging in the console
Write-Host ("The file " + $file.Name + " has been moved")
} catch {
Write-Host ($file.Name + $_.Exception.message)
}
}
Это обработает каждый файл во время прохода цикла.
Честно говоря, если бы вы хотели получить более подробный вывод, что-то вроде robocopy сделало бы это из коробки с дополнительной информацией.
robocopy "\\fileLocation\Express\" '\\networkShare\Archive\express' '*.pdf' /MOV
Подробнее об этом можно узнать через robocopy /?
или Док. Microsoft