2012-07-17 4 views
4

동일한 사이트 모음의 한 문서 라이브러리에서 다른 문서 라이브러리로 10,000 파일을 이동해야합니다. Powershell이 ​​이것을하는 가장 좋은 방법이라고 생각합니다.동일한 사이트 모음에있는 문서 라이브러리간에 파일 이동

이 문서를 찾았지만이 스크립트를 적용하는 방법을 알지 못했지만 (이 프로젝트로 Powershell에 처음 노출되었습니다) 다음 문서를 발견했습니다. http://blog.isaacblum.com/2011/10/04/spfilecollection-class-copy-files-to-another-document-library/#respond.

$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) 
} 

이 일을 다른 방법이 있나요 :

본인은 아무 소용이 다음과 같은 시도? 이 아래 x0n의 게시물 당으로

셰어 포인트 2007 (단지 2010)에서 지원되지 않습니다 : 나는/세미 대답 2010 년

업데이트 MOSS2007 및 파워 쉘 2.0,하지 셰어를 사용하고 있습니다. 나는 관련입니다이 스레드, 외부의 다음과 같은 조언을 recevied, 미래에 다른 사람을 도움이 될 것입니다

불행하게도 SharePoint 2010 제품의 관리 셸 (이 PowerShell을 스냅인 및 관련 cmdlet에의) MOSS 2007과 호환되지 않습니다 해당 버전의 SharePoint에는 Microsoft에서 직접 사용할 수있는 cmdlet이 없습니다. 즉MOSS 2007과 함께 PowerShell을 사용할 수 있지만 직접 작성하거나 직접 STSADM 또는 SharePoint 개체 모델 을 사용하는 cmdlet을 작성하거나 MOSS를 사용해야합니다. 2007 호환 cmdlets 타사 출신. MOSS 2007 (http://blog.falchionconsulting.com/) 또는 CodePlex.com, TechNet Script와 같은 cmdlets를 cmdlet에 업로드하는 사람들을위한 멋진 PowerShell cmdlet을 많이 사용하는 Gary Lapointe의 블로그를 확인해 보시기 바랍니다. 저장소, POSHCode.org 또는 http://get-spscripts.com/.

답변

4

Microsoft.SharePoint.PowerShell 스냅인은 SharePoint 2010에만 사용되며 SharePoint 2007 서버에서는 사용할 수 없습니다.

이 작업을 수행하는 가장 쉬운 방법은 Internet Explorer를 열고 소스 문서 라이브러리를 탐색 한 다음 "탐색기보기"를 여는 것입니다. 모든 문서를 선택하고 복사하십시오 (Ctrl + C). 다른 IE 창을 열고 대상 문서 라이브러리 및 붙여 넣기 (Ctrl + V)에 대해 동일한 작업을 수행하십시오.

탐색기보기에서 열리지 않으면 복사/붙여 넣기를 수행하는 데 사용중인 컴퓨터에 "WebClient"서비스가 실행 중인지 확인하십시오. Windows 2008 R2를 실행하는 경우 "데스크톱 환경"기능을 추가하기 전에는이 서비스를 사용할 수 없습니다. 그것은 WebClient 서비스가되는 대신 윈도우 7 시스템을 찾기 위해 많은 쉽게

업데이트 (그러나 그것은 실행중인해야합니다.) : 말했다

, 스크립트가 약 80 % 아마와 정말 2010 년 스냅인이 필요하지 않습니다. 나는 (죄송합니다) 지금이 권리를 테스트 할 수 있지만 약 99 % 정확해야 :

[reflection.assembly]::loadwithpartialname("microsoft.sharepoint") > $null 

$org = "http://farm/sitecollection/sourcedoclib" 
$dest = "http://farm/sitecollection/targetdoclib" 

$site = new-object microsoft.sharepoint.spsite $org 
$web = $site.openweb() 

$srcLibrary = $web.Lists["sourcedoclib"] 
$destLibrary = $web.Lists["targetdoclib"] 

$destFiles = $destLibrary.Folders["Archived"] 

foreach ($item in $srcLibrary.Items) 
{ 
    if ($item.File) { 
     $curFile = $item.file.OpenBinary() 
     $destURL = $destFiles.Folder.Url + "/" + $item.file.Name 
     $destFiles.Add($destURL, $curFile, $true) 
    } 
} 

행운을 빕니다.

+0

이것이 이전에 수행 한 방법입니다.하지만 불행히도 이는 반복되는 프로세스이며 월말까지 30 개 이상의 문서 라이브러리로 확산 될 것입니다. 위의 작업을 수행하는 데 사용할 수있는 MOSS 용 PowerShell 라이브러리가 있습니까? – Codingo

+0

어쨌든 2007에서 작동하려면 스크립트를 많이 수정하지 않아도됩니다. 내가 한번 보자. – x0n

+0

이것을 구현하려고 시도했지만 라이브러리의 각 파일에 대해 다음과 같은 메시지가 나타납니다 (이동하지 않음). 어떤 아이디어입니까? 오류 : 널값 표현식에서 메소드를 호출 할 수 없습니다. 줄에 : 20 문자 : 23 $ destFiles.Add은 <<<< ($ destURL, $ curFile이 사실 $) + + CategoryInfo : InvalidOperation : (추가 : 문자열) [], RuntimeException을 + FullyQualifiedErrorId : InvokeMethodOnNull – Codingo

관련 문제