使用Add-PnPFile向两个SharePoint库添加同一文件失败问题排查
问题原因及解决方案
你的脚本在第一个Add-PnPFile执行后终止,核心原因是PnP PowerShell cmdlet默认的错误处理规则:
PnP命令默认ErrorAction参数为Stop,也就是说只要命令执行过程中出现任何错误——哪怕是你没察觉到的隐性问题,比如文件已存在但未指定覆盖参数、目标库权限不足、文件处于锁定状态等——脚本会直接终止运行,后续的Write-Host和第二个Add-PnPFile自然不会执行。你看到文件成功添加到第一个库,可能只是文件上传完成,但后续的隐性错误触发了脚本终止逻辑。
解决方法
方法1:强制脚本继续执行
在每个Add-PnPFile命令后添加-ErrorAction Continue,让脚本即使遇到错误也会运行后续代码:
Add-PnPFile -Path "C:\yourfile.txt" -Folder "DocumentLibrary1" -ErrorAction Continue Write-Host "已添加到DocumentLibrary1" Add-PnPFile -Path "C:\yourfile.txt" -Folder "DocumentLibrary2" -ErrorAction Continue
如果不想显示错误信息,可以替换为-ErrorAction SilentlyContinue。
方法2:捕获错误并针对性处理
用try/catch块包裹命令,明确捕获错误并输出详情,同时保证脚本流程不中断:
try { Add-PnPFile -Path "C:\yourfile.txt" -Folder "DocumentLibrary1" Write-Host "已添加到DocumentLibrary1" } catch { Write-Host "添加到DocumentLibrary1时出错:$_" } try { Add-PnPFile -Path "C:\yourfile.txt" -Folder "DocumentLibrary2" Write-Host "已添加到DocumentLibrary2" } catch { Write-Host "添加到DocumentLibrary2时出错:$_" }
方法3:排查第一个命令的隐性错误
脚本执行后,运行以下命令查看最近一次的错误详情,就能明确第一个Add-PnPFile是否真的完全无错:
$Error[0] | Format-List -Force
内容的提问来源于stack exchange,提问作者DanielJ
相关产品推荐
相关产品推荐

