PowerShell通过Microsoft.SharePoint.Client.ClientContext上传SharePoint Online文件报错问询
你遇到的报错是因为脚本运行时没有加载SharePoint CSOM对应的依赖程序集,可根据你的环境选择以下任意一种方案解决:
方案1:复用已安装的PnP PowerShell内置CSOM程序集(推荐)
你之前触发Connect-PnPOnline后脚本可正常运行,本质是PnP PowerShell模块自带了兼容版本的CSOM程序集。你可以在脚本开头添加以下代码,自动加载PnP模块内置的CSOM依赖,无需手动执行Connect-PnPOnline再取消:
# 自动查找最新版PnP.PowerShell模块的CSOM程序集路径并加载 $latestPnpModule = Get-Module -ListAvailable PnP.PowerShell | Sort-Object Version -Descending | Select-Object -First 1 $moduleRoot = Split-Path $latestPnpModule.Path -Parent Add-Type -Path (Join-Path $moduleRoot "Microsoft.SharePoint.Client.dll") Add-Type -Path (Join-Path $moduleRoot "Microsoft.SharePoint.Client.Runtime.dll")
该方案无需额外安装任何软件,不会出现版本兼容问题。
方案2:安装SharePoint Online CSOM SDK
如果你的环境没有安装PnP PowerShell,可以安装SharePoint Online Client Components SDK,安装完成后即可使用你之前查到的固定路径加载程序集:
# 加载本地安装的CSOM程序集 Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
方案3:手动获取CSOM程序集(无安装权限场景)
如果你的设备没有软件安装权限,可以通过NuGet获取CSOM的两个dll文件,存放到本地任意目录后,在Add-Type时指定你实际存放dll的路径即可。
将对应加载代码放在你原上传脚本的最开头,即可解决报错。
内容的提问来源于stack exchange,提问作者Kaikus
相关产品推荐
相关产品推荐

