使用PowerShell从SharePoint Online提取附件

时间:2019-01-17 16:12:42

标签: powershell sharepoint-online

当前,我正在尝试从SharePoint Online上的列表中提取附件。我在网上找到了应该执行此操作的代码,但出现错误。我发现的代码如下:

$webUrl = "https://mm.sharepoint.com/teams/pj-b0000"
$library = "Photos" 
#Local Folder to dump files
$tempLocation = "C:\Users\C\Documents\temp"    
$s = new-object Microsoft.SharePoint.SPSite($webUrl)    
$w = $s.OpenWeb()         
$l = $w.Lists[$library]    
foreach ($listItem in $l.Items)
{
    Write-Host "    Content: " $listItem.ID 
    $destinationfolder = $tempLocation + "\" + $listItem.ID          
    if (!(Test-Path -path $destinationfolder))        
    {            
        $dest = New-Item $destinationfolder -type directory          
    }
    foreach ($attachment in $listItem.Attachments)    
    {        
        $file = $w.GetFile($listItem.Attachments.UrlPrefix + $attachment)        
        $bytes = $file.OpenBinary()                
        $path = $destinationfolder + "\" + $attachment
        Write "Saving $path"
        $fs = new-object System.IO.FileStream($path, "OpenOrCreate") 
        $fs.Write($bytes, 0 , $bytes.Length)    
        $fs.Close()    
    }
}

但是我得到这个错误:

new-object : Cannot find type [Microsoft.SharePoint.SPSite]: verify that the assembly containing this type is loaded.
At C:\Users\C\Documents\SPListExtract.ps1:5 char:6
+ $s = new-object Microsoft.SharePoint.SPSite($webUrl)
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

You cannot call a method on a null-valued expression.
At C:\Users\C\Documents\SPListExtract.ps1:6 char:1
+ $w = $s.OpenWeb()
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Cannot index into a null array.
At C:\Users\C\Documents\SPListExtract.ps1:7 char:1
+ $l = $w.Lists[$library]
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

所以我对代码进行了一些编辑,但我只在列表中获得了该项目,而没有获得项目中的附件。我写的代码如下:

Connect-PnPOnline -Url 'https://mm.sharepoint.com/teams/pj-b0000' -UseWebLogin
$tempLocation = "C:\Users\C\Documents\temp"
$list = Get-PnPListItem -List 'Photos'

foreach ($listItem in $list)
{
    Write-Host "    Content: " $listItem.ID 
    $destinationfolder = $tempLocation + "\" + $listItem.ID          
    if (!(Test-Path -path $destinationfolder))        
    {            
        $dest = New-Item $destinationfolder -type directory          
    }
    foreach ($attachment in $listItem.Attachments)    
    {        
        $file = $w.GetFile($listItem.Attachments.UrlPrefix + $attachment)        
        $bytes = $file.OpenBinary()                
        $path = $destinationfolder + "\" + $attachment
        Write "Saving $path"
        $fs = new-object System.IO.FileStream($path, "OpenOrCreate") 
        $fs.Write($bytes, 0 , $bytes.Length)    
        $fs.Close()    
    }
}

我看到我的问题是我认为$ file变量的内部foreach循环。有人可以帮我吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

错误的第一行表示您没有加载程序集:

new-object : Cannot find type [Microsoft.SharePoint.SPSite]: verify that the assembly containing this type is loaded.

这些程序集仅安装在SharePoint服务器上:

https://social.technet.microsoft.com/Forums/en-US/4a78ed2c-efde-40fa-800c-c4ecfa68a7c4/cannot-find-type-microsoftsharepointspsite-when-running-sharepoint-powerscript-in-a-windows-10?forum=sharepointdevelopment