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
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.
