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.
