Weboldal keresés

SharePoint Online: Almappákat és fájlokat tartalmazó mappa migrálása a PowerShell segítségével


Követelmény: A PowerShell segítségével migráljon át egy mappát almappáival és fájljaival a helyi lemezről a SharePoint Online rendszerbe.

PowerShell egy mappa almappáival és fájljaival másolásához a SharePoint Online-ba:

Egy mappa (és annak összes almappája és fájlja) áttelepítése a helyi számítógépről a SharePoint Online-ba ijesztő feladat lehet. Szerencsére a PowerShell segíthet a folyamat gyors és egyszerű lebonyolításában. Ez a cikk bemutatja, hogyan másolhat almappákat és fájlokat tartalmazó mappákat a SharePoint Online-ba a PowerShell segítségével.

Itt található a PnP PowerShell, amellyel egy adott mappából az összes fájlt és almappát átmásolhatja egy helyi meghajtóról (vagy hálózati meghajtóról) a SharePoint Online rendszerbe:


#Function to Copy Multiple Files with Folder structure to SharePoint Online Document Library
Function Migrate-PnPFolderToSPO()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $SourceFolderPath,
        [Parameter(Mandatory=$true)] [string] $LibraryName,
        [Parameter(Mandatory=$true)] [string] $LogFile
    )
 
    Try {
        Add-content $Logfile -value "`n---------------------- File Upload Script Started: $(Get-date -format 'dd/MM/yyy hh:mm:ss tt')-------------------"
     
        #Connect to PnP Online
        Connect-PnPOnline -Url $SiteURL -Interactive  

        #Get the Target Folder to Upload
        $Web = Get-PnPWeb
        $List = Get-PnPList $LibraryName -Includes RootFolder
        $TargetFolder = $List.RootFolder
        $TargetFolderSiteRelativeURL = $TargetFolder.ServerRelativeURL.Replace($Web.ServerRelativeUrl,[string]::Empty)
 
        #Get All Items from the Source
        $Source = Get-ChildItem -Path $SourceFolderPath -Recurse
        $SourceItems = $Source | Select FullName, PSIsContainer, @{Label='TargetItemURL';Expression={$_.FullName.Replace($SourceFolderPath,$TargetFolderSiteRelativeURL).Replace("\","/")}}
        Add-content $Logfile -value "Number of Items Found in the Source: $($SourceItems.Count)"
 
        #Upload Source Items from Fileshare to Target SharePoint Online document library
        $Counter = 1
        $SourceItems | ForEach-Object {
                #Calculate Target Folder URL
                $TargetFolderURL = (Split-Path $_.TargetItemURL -Parent).Replace("\","/")
                $ItemName = Split-Path $_.FullName -leaf
                   
                #Replace Invalid Characters
                $ItemName = [RegEx]::Replace($ItemName, "[{0}]" -f ([RegEx]::Escape([String]'\*:<>?/\|')), '_')

                #Display Progress bar
                $Status  = "uploading '" + $ItemName + "' to " + $TargetFolderURL +" ($($Counter) of $($SourceItems.Count))"
                Write-Progress -Activity "Uploading ..." -Status $Status -PercentComplete (($Counter / $SourceItems.Count) * 100)
 
                If($_.PSIsContainer)
                {
                    #Ensure Folder
                    $Folder  = Resolve-PnPFolder -SiteRelativePath ($TargetFolderURL+"/"+$ItemName)
                    Write-host "Ensured Folder '$($ItemName)' to Folder $TargetFolderURL"
                    Add-content $Logfile -value "Ensured Folder '$($ItemName)' to Folder $TargetFolderURL"
                }
                Else
                {
                        #Upload File
                        If($TargetFolderURL.StartsWith("/")) {$TargetFolderURL = $TargetFolderURL.Remove(0,1) }
                        $File  = Add-PnPFile -Path $_.FullName -Folder $TargetFolderURL
                        Write-host "Uploaded File '$($_.FullName)' to Folder $TargetFolderURL"
                        Add-content $Logfile -value "Uploaded File '$($_.FullName)' to Folder $TargetFolderURL"                        
                }
                $Counter++
        }
}
    Catch {
        Write-host -f Red "Error:" $_.Exception.Message
        Add-content $Logfile -value "Error:$($_.Exception.Message)"
    }
    Finally {
       Add-content $Logfile -value "---------------------- File upload Script Completed: $(Get-date -format 'dd/MM/yyy hh:mm:ss tt')-----------------"
    }
}
 
#Call the Function to Upload a Folder to SharePoint Online
Migrate-PnPFolderToSPO -SiteURL "https://crescent.sharepoint.com/sites/marketing" -SourceFolderPath "C:\Documents" -LibraryName "Migration" -LogFile "C:\Temp\Migration-LOG.log"

Ez a parancsfájl egy mappa tartalmát a SharePoint Online dokumentumtárba másolja. Felülír minden meglévő fájlt a cél SharePoint Online könyvtárban, és létrehoz egy mappát, ha az nem létezik a célhelyen. Ezt a szkriptet arra is használhatjuk, hogy fájlokat és mappákat migráljunk hálózati fájlmegosztásról a SharePoint Online dokumentumtárba!

Összefoglalva, a PowerShell almappákat és fájlokat tartalmazó helyi mappák SharePoint Online-ba való migrálása hatékony és hatékony megoldást kínál az adatok helyi rendszerről a felhőbe való átvitelére. Ez a módszer nemcsak a mappa szerkezetét és tartalmát őrzi meg, hanem lehetővé teszi az áttelepítési folyamat automatizálását is, így a szervezetek gyorsan és egyszerűen áthelyezhetik adataikat a felhőbe.

Kapcsolódó cikkek