任务:我需要遍历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.“你不能在空值表达式上调用方法。”
New-Object:使用“2”agrument(s)调用“.ctor”的异常:“找不到路径的一部分'C:\ SP Document Library files''
New-Object:找不到构造函数。找不到类型system.IO.BinaryWrite的适当构造函数。
术语“Get-SPSite”未被识别为cmdlet,函数,可操作程序或脚本文件。验证该术语,然后重试。
对错误#2的回应:我创建了文件夹&命名为“SP文档库文件”,以便路径正确C:\ SP文档库文件不确定为什么我看到msg。
库文件( .csv, .xls)存在于文件夹中。 文件夹名称:2014-01-31。 1.如何处理以解决上述错误消息。 2.我不确定是否需要使用整个sharepoint url或部分内容。请教我。
谢谢!
答案 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()