Compartilhe que você está se especializando

O SharePoint Online, como parte do Microsoft 365, se tornou uma das soluções mais populares para o armazenamento e gerenciamento de arquivos na nuvem. Mas muitas empresas ainda mantêm os dados em servidores de arquivos locais (on-premises), o que pode dificultar a colaboração e o acesso remoto eficiente. Para ajudar a superar essa barreira e melhorar a integração com a nuvem, mover esses arquivos locais para o SharePoint Online é uma ótima solução.

Neste post, vamos explorar como usar o PowerShell para a migração de arquivos e pastas do seu servidor de arquivos local para o SharePoint Online. Se você está buscando uma maneira eficiente de transferir dados em grande escala para o SharePoint Online, continue lendo e descubra como o PowerShell pode facilitar esse processo!

Script PowerShell

Para executar, você precisará ter o modulo do SharePoint Online neste computador (caso não tenha, instale primeiro), com ele instalado, abra o PowerShell como administrador e execute (ou coloque no PowerShell ISE, para adaptar conforme sua necessidade). Caso prefira, em nosso GitHub existe a versão mais atualizada desse código.

#Install-Module SharePointPnPPowerShellOnline
#Install-Module -Name Microsoft.Online.SharePoint.PowerShell
#---------------------------------------------------------------------------------
$Counter = 0
$env:PNPLEGACYMESSAGE='false'
Clear-Host

#Get Sharepoint URL
Write-Host "https://" -NoNewline
Write-Host "YOUR_TENANT" -ForegroundColor Yellow -NoNewline
Write-Host ".sharepoint.com/sites/" -NoNewline
Write-Host "YOUR_SITE" -ForegroundColor Red
Write-Host "Inform what is "-NoNewline
Write-Host "YOUR_TENANT" -ForegroundColor Yellow -NoNewline
$tenant = Read-Host " "
Write-Host "Inform what is "-NoNewline
Write-Host "YOUR_SITE" -ForegroundColor Red -NoNewline
$SharePointSite = Read-Host " "

#Get local folder
$folderDialog = New-Object -ComObject Shell.Application
$folder = $folderDialog.BrowseForFolder(0, "Set your Source Folder", 0, 0)
$SourceFolder = $folder.Self.Path

#Conecting to SharePoint
Write-Host "----- Conecting into SharePoint https://" -NoNewline
Write-Host "$tenant" -ForegroundColor Yellow -NoNewline
Write-Host ".sharepoint.com/sites/" -NoNewline
Write-Host "$SharePointSite" -ForegroundColor Red

$SiteURL = "https://$tenant.sharepoint.com/sites/$SharePointSite"
Connect-PnPOnline -Url "$SiteURL" -UseWebLogin

#Listing local content
Write-Host "----- Listing content"
$items = Get-ChildItem $SourceFolder -Recurse -File

#Creating folders
Write-Host "----- Creating folders"
$folders = ($items).DirectoryName | Get-Unique
$folders = $folders | Where-Object { $_ -ne $SourceFolder }
$folders =$folders.replace($SourceFolder+"\","")
$folders =$folders.replace("\","/")
$folders | ForEach-Object {
    $FolderURL = $_
    $FolderURL = "Documentos/"+$FolderURL
    try {
        Resolve-PnPFolder -SiteRelativePath $FolderURL -ErrorAction Stop | Out-Null
    }
    catch {
        Write-Host "Error creating $FolderURL" -ForegroundColor Red
    }
    Finally {
        Write-Host "created $FolderURL" -ForegroundColor Green
    }
}

#Copying files
Write-Host "----- Copying files"
$items | ForEach-Object {
    $item = $_
    $FullName = ($item).FullName
    $FolderSource = ($item).DirectoryName
    $FileName = ($item).Name
    $TargetFolderURL = "Documentos"+$FolderSource.Replace($SourceFolder,"").Replace("\","/")
    $FileExists = Get-PnPFile -Url "$TargetFolderURL\$FileName" -ErrorAction SilentlyContinue
    If(!$FileExists)
    {
        try {
            #Resolve-PnPFolder -SiteRelativePath $TargetFolderURL | out-null
            Add-PnPFile -Path $FullName -Folder $TargetFolderURL -ErrorAction Stop | out-null
            #Write-Host "Copied $FullName" -ForegroundColor Green
            $Counter++
        }
        catch {
            Write-Host "Not copied $FullName" -ForegroundColor Red
        }
    }
}
Write-Host "$Counter++ files copied"

Fontes/Referências

NVLAN – Github

https://sharepointdiary.com/2018/01/migrate-file-share-to-sharepoint-online-using-powershell.html
https://youtu.be/WceeMca_vwY
https://youtu.be/xwKTFfhQWLY

Mais Informações

Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.

Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria