Операторы Try / catch могут только перехватывать завершающие ошибки (обычно они указывают на серьезную ошибку).PowerShell также имеет концепцию постоянных ошибок.Вы видите, что ошибка в использовании файла - это не прекращающаяся ошибка.Это хорошо с точки зрения того, что, если вы перемещали тысячи файлов, и у одного была целевая цель, команда не выдумывает, она продолжает работать.У вас есть два варианта здесь.Вы можете игнорировать эти ошибки, установив для параметра ErrorAction значение SilentlyContinue (значение 0), например:
Move-Item foo bar -ea 0
Или вы можете преобразовать нескончаемую ошибку в завершающую ошибку, установив этот же параметр на «Стоп».а затем используйте команду try / catch, но не фильтруйте по IOException, поскольку PowerShell переносит исключение, например:
try { move-Item .\About_This_Site.txt vmmap.exe -ea stop } `
catch {$_.GetType().FullName}
System.Management.Automation.ErrorRecord