ค้นหาเว็บไซต์

คัดลอกไฟล์ระหว่างไลบรารีเอกสารใน SharePoint โดยใช้ PowerShell


ความต้องการ: คัดลอกไฟล์ระหว่างไลบรารีเอกสาร SharePoint โดยใช้ PowerShell

สคริปต์ PowerShell เพื่อคัดลอกไฟล์จากไลบรารีหนึ่งไปยังอีกไลบรารีหนึ่ง

ในโพสต์บล็อกนี้ เราจะแสดงวิธีคัดลอกไฟล์ระหว่างไลบรารีเอกสาร SharePoint โดยใช้ PowerShell สิ่งนี้มีประโยชน์หากคุณต้องการคัดลอกหรือย้ายไฟล์ระหว่างไลบรารีเอกสารตั้งแต่สองไลบรารีขึ้นไปอย่างรวดเร็วเพื่อวัตถุประสงค์ในการสำรองข้อมูลหรือเก็บถาวร


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Variables for Processing
$WebURL="https://portal.crescent.com/sites/Sales/"
$SourceFile="https://portal.crescent.com/sites/Sales/TeamDocs/InvoiceTemp.xlsx"
$TargetLibrary="Invoice Documents"

#Get Objects
$Web = Get-SPWeb $WebURL
$SourceFile = $Web.GetFile($SourceFile)
$TargetLibrary = $Web.GetFolder($TargetLibrary)

#Copy the file into the Target library
$File = $TargetLibrary.Files.Add($SourceFile.Name, $SourceFile.OpenBinary(), $true)

#Copy Meta-Data
$Item = $File.Item
$item["Created"] = $SourceFile.TimeCreated.ToLocalTime()
$item["Modified"] = $SourceFile.TimeLastModified.ToLocalTime()
$item["Author"] = $SourceFile.Author
$item["Editor"] = $SourceFile.ModifiedBy
#Update
$Item.UpdateOverwriteVersion()

สคริปต์ PowerShell เพื่อคัดลอกไฟล์ทั้งหมดระหว่างไลบรารีเอกสาร:

มาคัดลอกไฟล์และโฟลเดอร์ทั้งหมดจากไลบรารีหนึ่งไปยังอีกไลบรารีหนึ่งพร้อมกับข้อมูลเมตา (ไม่รวม: ด้านบน!)


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Custom Function to Copy Files from Source Folder to Target
Function Copy-Files($SourceFolder, $TargetFolder)
{
    write-host "Copying Files from:$($SourceFolder.URL) to $($TargetFolder.URL)"
    #Get Each File from the Source 
    $SourceFilesColl = $SourceFolder.Files

    #Iterate through each item from the source
    Foreach($SourceFile in $SourceFilesColl) 
    {
        #Copy File from the Source
        $NewFile = $TargetFolder.Files.Add($SourceFile.Name, $SourceFile.OpenBinary(),$True)
 
        #Copy Meta-Data from Source
        Foreach($Field in $SourceFile.Item.Fields)
        {
            If(!$Field.ReadOnlyField)
            {
                if($NewFile.Item.Fields.ContainsField($Field.InternalName))
                {
                    $NewFile.Item[$Field.InternalName] = $SourceFile.Item[$Field.InternalName]
                }
            }
        }
        #Update
        $NewFile.Item.UpdateOverwriteVersion()
    
        Write-host "Copied File:"$SourceFile.Name
    }
    
    #Process SubFolders
    Foreach($SubFolder in $SourceFolder.SubFolders)
    {
        if($SubFolder.Name -ne "Forms")
        {
            #Check if Sub-Folder exists in the Target Library!
            $NewTargetFolder = $TargetFolder.ParentWeb.GetFolder($SubFolder.Name)
 
            if ($NewTargetFolder.Exists -eq $false)
            {
                #Create a Folder
                $NewTargetFolder = $TargetFolder.SubFolders.Add($SubFolder.Name)
            }
            #Call the function recursively
            Copy-Files $SubFolder $NewTargetFolder
        }
    }
}

#Variables for Processing
$WebURL="https://portal.crescent.com/sites/sales/"
$SourceLibrary ="Team Docs"
$TargetLibrary = "Sales Documents"

#Get Objects
$Web = Get-SPWeb $WebURL
$SourceFolder = $Web.GetFolder($SourceLibrary)
$TargetFolder = $Web.GetFolder($TargetLibrary)

#Call the Function to Copy All Files
Copy-Files $SourceFolder $TargetFolder

คัดลอกไฟล์ระหว่างโฟลเดอร์โดยใช้ PowerShell

ต้องการคัดลอกไฟล์ระหว่างโฟลเดอร์ในไลบรารีเอกสารหรือไม่? เพียงเปลี่ยนค่าพารามิเตอร์ $SoureLibrary และ $TargetLibrary เป็น URL ของโฟลเดอร์ เช่น.


#Relative Path of the Folder
$SourceLibrary ="/Documents/2017"
$TargetLibrary = "/Team Documents/Active/2018"

คัดลอกเอกสารระหว่างไซต์ ไซต์คอลเลกชัน เว็บแอปพลิเคชัน:

แล้วการคัดลอกระหว่างไซต์ล่ะ? เพียงเปลี่ยนบรรทัดด้านล่างในสคริปต์


#Variables for Processing
$SourceWebURL = "https://Your-Source-Web-URL"
$TargetWebURL = "https://Your-Target-Web-URL"

$SourceWeb = Get-SPWeb $SourceWebURL
$TargetWeb = Get-SPWeb $TargetWebURL

$SourceLibrary ="Team Docs"
$TargetLibrary = "Shared Documents"

$SourceFolder = $SourceWeb.GetFolder($SourceLibrary)
$TargetFolder = $TargetWeb.GetFolder($TargetLibrary)

#Call the Function to Copy All Files
Copy-Files $SourceFolder $TargetFolder

หากต้องการย้ายไฟล์ระหว่างไลบรารีเอกสาร SharePoint ให้ใช้: ย้ายไฟล์ระหว่างไลบรารีเอกสารด้วยข้อมูลเมตาและประวัติเวอร์ชัน

บทความที่เกี่ยวข้อง