使用Windows PowerShell脚本访问Sharepoint文档库列表

时间:2014-01-29 15:44:25

标签: c# powershell sharepoint-2010

任务:我需要遍历Sharepoint网站上的所有文件并将其下载到本地文件夹。

脚本:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

$s = Get-SPSite “https://abc.abctools.consumer.abc.net/sites/rtc/report/SitePages/Forms/AllPages.aspx”
$files = $s.RootWeb.GetFolder("Shared Documents").Files
foreach ($file in $files) {
    Write-host $file.Name
    $b = $file.OpenBinary()
    $fs = New-Object System.IO.FileStream(("C:\SP Document Library files\"+$file.Name), [System.IO.FileMode]::Create)
    $bw = New-Object System.IO.BinaryWriter($fs)
    $bw.Write($b)
    $bw.Close()
}

错误:当我尝试运行/执行上述脚本时,我得到了。 1.“你不能在空值表达式上调用方法。”

  1. New-Object:使用“2”agrument(s)调用“.ctor”的异常:“找不到路径的一部分'C:\ SP Document Library files''

  2. New-Object:找不到构造函数。找不到类型system.IO.BinaryWrite的适当构造函数。

  3. 术语“Get-SPSite”未被识别为cmdlet,函数,可操作程序或脚本文件。验证该术语,然后重试。

  4. 对错误#2的回应:我创建了文件夹&命名为“SP文档库文件”,以便路径正确C:\ SP文档库文件不确定为什么我看到msg。

    库文件( .csv, .xls)存在于文件夹中。 文件夹名称:2014-01-31。 1.如何处理以解决上述错误消息。 2.我不确定是否需要使用整个sharepoint url或部分内容。请教我。

    谢谢!

1 个答案:

答案 0 :(得分:0)

尝试提供ReadWrite FileAccess。

如果您知道Url而不是使用SPSite,则可以直接获取根网站。

这是我使用的脚本并且一直在使用

$siteUrl = '“https://abc.abctools.consumer.abc.net/sites/rtc”'
$listUrl = '“https://abc.abctools.consumer.abc.net/sites/rtc/Shared Documents”'
$folderPath = 'C:\\....'

$web = Get-SPWeb -Identity $siteUrl
$list = $web.GetList($listUrl)
$items = $list.Items
ForEach ($item in $items)
{
    $binary = $item.File.OpenBinary();
    $folderPathToSave = $folderPath + "\\" + $item.Name;
    if ($binary -ne $null)
    {
        $stream = New-Object System.IO.FileStream($folderPathToSave,[System.IO.FileMode]::Create,[System.IO.FileAccess]::ReadWrite);
        $writer = New-Object System.IO.BinaryWriter($stream);
        $writer.Write($binary);
        $writer.Close();
    }
}

$web.Dispose()

原帖: http://naimmurati.wordpress.com/2012/06/07/backup-documents-from-document-library-with-powershell-script/