В некоторых случаях это может помочь людям, которые ищут это точное исключение. Исключение, похоже, не объясняет, что на самом деле происходило, поэтому вот некоторые предпосылки, чтобы люди могли увидеть, похожа ли ситуация на мою:
Он был создан, когда я использовал Powershell и Get-PNPFile
для массового получения файлов с сайта Sharepoint. После некоторой царапины на голове это, похоже, связано с существованием файла, уже присутствующего в локальной системе после предыдущей загрузки. Поскольку скрипт использовался для хранения локальной копии определенных папок на сайте sharepoint, я пытался перезаписать файлы локально, если файлы на сервере были новее. (Немного похоже на сырой rsync).
Похоже, Get-PnpFile
не удаляет (перезаписывает) файл, если он уже существует, а генерирует это исключение. Ниже приведен краткий обзор кода, который работал без ошибок:
Try {
$local_path = ($local_dir + $local_file)
#test for the local file first and rename it
if( Test-Path ( $local_path ) -PathType Leaf ){
Rename-Item $local_path ($local_path + '.old' )
}
#get the file
Get-PnpFile -ServerRelativeUrl $file.ServerRelativeUrl -Path $local_dir -FileName $local_file -AsFile
#remove the old file
if( Test-Path ( $local_path ) -PathType Leaf ){
Remove-Item ($local_path + '.old' )
}
}
Catch {
#handle error and continue
}
Сначала проверьте локальный файл и переименуйте его, загрузите файл, удалите переименованный локальный файл. Я обернул его в блок Try catch, чтобы в случае сбоя загрузки этого файла я мог продолжить работу как часть цикла, а затем я мог искать любые имена файлов с суффиксом .old и восстанавливать самые последние локальные файлы для сбоев, делая примечание тех.
При повторном запуске сценария сценарий не будет видеть удаленный файл локально (поскольку имена не будут совпадать и извлекать свежую копию, но удалит файл .old (из предыдущего запуска), если он завершится успешно) в получении файла.
Я больше не видел исключения.
Надеюсь, это кому-нибудь поможет.
P.S. (если какой-либо из ваших файлов оканчивается на .old Странно / Неизвестно что произойдет с простым способом, описанным выше ... вы были предупреждены)
Обновление
Я буду обновлять здесь всякий раз, когда я вижу новую причину этого исключения
Обновление
Похоже, что квадратные скобки "[" или "]" в имени файла также могут быть причиной этого. Возможно, в URL нужно урленкодирование или экранирование ....