我需要将大约 10,000 个文件从一个文档库移动到同一网站集中的另一个文档库。我相信 powershell 是做到这一点的最佳手段。
我发现了以下文章:http ://blog.isaacblum.com/2011/10/04/spfilecollection-class-copy-files-to-another-document-library/#respond提出了一种方法但是我'我不确定如何调整这个脚本(我第一次接触到这个项目的 Powershell)。
我尝试了以下方法无济于事:
$PSSnapin = Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null
clear
$org = "hhttp://farm/sitecollection/Document Library Source/Forms/AllItems.aspx"
$dest = "hhttp://farm/sitecollection/Document Library Destination/Forms/AllItems.aspx"
$orgLibrary = (Get-SPWeb $org).Folders["Documents"]
$destLibrary = (Get-SPWeb $dest).Folders["Documents"]
$destFiles = $destLibrary.Files
foreach ($file in $orgLibrary.Files)
{
$curFile = $file.OpenBinary()
$destURL = $destFiles.Folder.Url + "/" + $file.Name
$destFiles.Add($destURL, $curFile, $true)
}
有没有其他方法可以做到这一点?请注意,我使用的是 MOSS2007 和 Powershell 2.0,而不是 SharePoint 2010。
更新/半答案:
根据下面 x0n 的帖子,SharePoint 2007(仅 2010)不支持此功能。我在这个线程之外收到了以下建议,这是相关的,并且应该在将来帮助其他人:
不幸的是,SharePoint 2010 的命令行管理程序(它是 PowerShell 管理单元和关联的 cmdlet)与 MOSS 2007 不兼容,并且没有直接从 Microsoft 提供的用于该版本 SharePoint 的 cmdlet。这意味着您仍然可以将 PowerShell 与 MOSS 2007 一起使用,但您要么必须编写自己的 cmdlet 来直接使用 STSADM 或 SharePoint 对象模型,要么必须使用与 MOSS 2007 兼容的来自第三方的 cmdlet。我建议查看 Gary Lapointe 的博客,了解许多适用于 MOSS 2007 (http://blog.falchionconsulting.com/) 的出色 PowerShell cmdlet,或者人们上传 cmdlet 的地方,例如 CodePlex.com、TechNet Script Repository、POSHCode .org 或http://get-spscripts.com/。