【问题标题】:Upload file to Sharepoint Online (Microsoft 365) using Powershell (Option 4 - Using Microsoft.SharePoint.Client.ClientContext)使用 Powershell 将文件上传到 Sharepoint Online (Microsoft 365)(选项 4 - 使用 Microsoft.SharePoint.Client.ClientContext)
【发布时间】:2021-09-25 05:46:38
【问题描述】:

我正在尝试将文件上传到 Sharepoint Online (M365) 库,但它一直给我错误。我尝试了很多脚本。这篇文章是关于使用 Microsoft.SharePoint.Client.ClientContext (我已经发布了关于其他脚本的问题,希望有人可以帮助我解决其中任何一个问题)

这是代码:

$WebUrl = "https://myDomain.sharepoint.com/sites/mySite/"
$LibraryName ="myLibrary"
$SourceFile="C:\myFolder\myFile.csv"
$AdminName ="mail@myDomain.com"
$AdminPassword ="myPassword"
  
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminName,(ConvertTo-SecureString $AdminPassword -AsPlainText -Force))
  
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($WebUrl) 
$Context.Credentials = $Credentials
 
$Library =  $Context.Web.Lists.GetByTitle($LibraryName)
 
$FileStream = ([System.IO.FileInfo] (Get-Item $SourceFile)).OpenRead()
#Get File Name from source file path
$SourceFileName = Split-path $SourceFile -leaf
   
$FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation
$FileCreationInfo.Overwrite = $true
$FileCreationInfo.ContentStream = $FileStream
$FileCreationInfo.URL = $SourceFileName
$FileUploaded = $Library.RootFolder.Files.Add($FileCreationInfo)
  
$Context.Load($FileUploaded) 
$Context.ExecuteQuery() 
 
$FileStream.Close()

从一开始,我就有这个错误:

New-Object:找不到类型 [Microsoft.SharePoint.Client.SharePointOnlineCredentials]:确保已加载包含此类型的程序集。

我想我必须加载它们。我看过这段代码:

#Load SharePoint CSOM Assemblies
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"

但是我没有安装这样的库

奇怪的是,如果我之前执行此命令(只需执行,然后取消提示询问 URL):

Connect-PnPOnline

然后,不知何故,引用被加载,因为脚本可以完美地运行。

您能告诉我如何加载这些库吗?

【问题讨论】:

    标签: powershell sharepoint


    【解决方案1】:

    我终于让这个脚本工作了!!

    首先,您必须安装 SharePoint Online 命令行管理程序:

    https://docs.microsoft.com/en-us/powershell/sharepoint/sharepoint-online/connect-sharepoint-online?view=sharepoint-ps

    基本上,执行:

    Install-Module -Name Microsoft.Online.SharePoint.PowerShell
    

    它会提示你安装 NuGet 包,没有安装

    然后,找到您的库,并在开头添加路径。就我而言:

    #Load SharePoint CSOM Assemblies
    Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\Microsoft.Online.SharePoint.PowerShell\16.0.21411.12000\Microsoft.SharePoint.Client.dll"
    Add-Type -Path "C:\Program Files\WindowsPowerShell\Modules\Microsoft.Online.SharePoint.PowerShell\16.0.21411.12000\Microsoft.SharePoint.Client.Runtime.dll"
    

    脚本就像魅力一样工作:)

    注意:我从以下位置获得此脚本:

    https://www.sharepointdiary.com/2016/06/upload-files-to-sharepoint-online-using-powershell.html

    【讨论】:

    • 很高兴您找到了解决方案。但是,我仍然认为使用 PnP.PowerShell 会更简单地实现您的目标。请参阅Add-PnPFile 了解更多信息
    • @SteveB,我已经尝试过这个解决方案,正如您在:stackoverflow.com/questions/68405778/… 中看到的那样,但我需要授予权限,但我不知道如何。如果你能在那篇文章中回答我,我将不胜感激:)
    猜你喜欢
    • 2021-09-25
    • 2021-09-25
    • 1970-01-01
    • 2014-07-01
    • 2016-04-29
    • 2018-12-28
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多