ShareGate est un outil permettant d’effectuer des migrations vers SharePoint, OneDrive et Microsoft 365. De plus, il permet de se connecter à l’environnement Google (Site/Drive) afin d’y opérer des migrations vers SharePoint.
Basé à Montréal, ShareGate a la confiance de plus de 10 000 sociétés dans le monde et est devenu un leader de son secteur via différents axes fonctionnels.
- Migration : ShareGate optimise les phases de migration de données. Il permet en quelques clics de récupérer les documents présents sur une plateforme à migrer et de les envoyer dans le nouvel espace collaboratif SharePoint.
- Gestion de contenu : déplacement de documents ou de sites, édition de métadonnées.
- Sécurité : mise en place d’un affichage des droits d’accès des différents sites SharePoint.
- Reporting : Permet la remontée d’indicateurs présents sur le SharePoint (ex : sites métier non utilisés, etc.)
Cet outil bénéficie d’une interface très riche en fonctionnalités et simple d’utilisation. Mais nous ne sommes pas là pour faire une formation sur ShareGate.
Comment automatiser sa migration Google Drive vers OneDrive ?
La migration de données est quelque chose de chronophage et peu stimulante pour le consultant. ShareGate offre la possibilité d’automatiser cela via le PowerShell.
La problématique étant : comment automatiser sa migration Google Drive vers OneDrive ?
Et plus concrètement, comment mettre en œuvre cette migration ?
La solution est de créer un Script PowerShell s’appuyant sur le module ShareGate.
Ces commandes sont à insérer dans l’invit de commande PowerShell.
- Import-Module ShareGate
N.B. : Il est recommandé d’utiliser PowerShell ISE
N.B 2. : Le module ShareGate PowerShell ne peut s’installer que sur une machine disposant de la solution ShareGate
Le script fonctionne de la manière suivante :
Il permet de se connecter aux Google Drive sources et les OneDrive de destinations avec pour objectif de migrer les données.
Le script appelle un fichier XML de mapping utilisateurs permettant de faire le lien entre les Google Drive utilisateurs et leur OneDrive.
Et voici le script PowerShell :
######################### Copy SPO site collections. ############################### <# Required ShareGate DLL #> #Import-Module ShareGate
<# VARIABLES (modify them if needed) #> $xmlFilePath = « C:\fakepath\MappingUsers.xml » $spoSiteDestUrl = « https://source.sharepoint.com »
<# Display informations, warnings and exceptions in console and write them in a log file. #> Function WriteLog { [CmdletBinding()] Param( [Parameter(Mandatory=$False)] [ValidateSet(« Info », »Warn », »Error », »Debug »)] [String] $Level = « Info »,
[Parameter(Mandatory=$True)] [string] $Message,
[Parameter(Mandatory=$False)] [ValidateSet(« Yes », »No »)] [string] $LogFile = « Yes » )
$today = (Get-Date).ToString(« yyyy/MM/dd HH:mm:ss »); $today = $today.ToString().Replace(‘/’,’.’).Replace(‘:’, ‘.’); $line = « – » + « $Level » + « : » + « $today » + » – » + « $Message »; $textColor = ‘Green’; if ($Level -eq ‘Info’) { $textColor = ‘Green’; } elseif ($Level -eq ‘Warn’) { $textColor = ‘Yellow’; } elseif ($Level -eq ‘Error’) { $textColor = ‘Red’; } else { $textColor = ‘Green’; }
$logFilePath = $today.Remove(10, 9) + ‘.txt’; $logFilePath = $PSScriptRoot + ‘\SP.Log_’ + $logFilePath; $logContent = $null;
try { $logContent = Get-Content -Path $logFilePath -ErrorAction Stop; Add-Content -Path $logFilePath -Value $line; } catch { Write-Host ‘Log file not found’ -ForegroundColor Yellow; Write-Host ‘Log file creation in progress’-ForegroundColor Green; }
if(($LogFile -eq ‘Yes’) -and ($logContent -eq $null)) {
Add-Content $logFilePath -Value $line; Write-Host $line -ForegroundColor $textColor; } else { Write-Host $line -ForegroundColor $textColor; } } <# MAIN #> Try { WriteLog -Level Info -Message « Getting XML file. » [xml]$sitesList = Get-Content $xmlFilePath WriteLog -Level Info -Message « XML file found. »
WriteLog -Level Info -Message « Connecting to destination SPO site collection: $($spoSiteDestUrl). » $connectionDest = Connect-Site -Url $spoSiteDestUrl -Browser WriteLog -Level Info -Message « Connected to destination SPO site collection: $($spoSiteDestUrl). »
foreach ($site in $sitesList.sites.site) { Try { WriteLog -Level Info -Message « Connecting to source Google drive: $($site.srcurl). » $googleDrive = Connect-GoogleDrive -Email $site.desturl WriteLog -Level Info -Message « Connected to source Google drive: $($site.srcurl). » } Catch { WriteLog -Level Info -Message « Failed to connect to Drive. Processing next one. » break }
Try { WriteLog -Level Info -Message « Connecting to destination SPO site: $($site.desturl). » $destsite =Connect-Site -Url $site.desturl -UseCredentialsFrom $connectionDest WriteLog -Level Info -Message « Connected to destination SPO site: $($site.desturl). » } Catch { WriteLog -Level Info -Message « Failed to connect to site. Processing next one. » Break }
WriteLog -Level Info -Message « Copying Data to OneDrive: $($srcsite). » Import-GoogleDriveDocument -GoogleDrive $googleDrive -DestinationList $site.desturl Copy-Site -site $srcsite -DestinationSite $destsite -Merge -Subsites WriteLog -Level Info -Message « Data copied successfully: $($srcsite). » } WriteLog -Level Info -Message « Script done. All data copied. » } Catch { WriteLog -Level Error -Message $($_.Exception.Message) } |
En se basant sur le module PowerShell de ShareGate, vous pouvez automatiser vos migrations simplement !
Si vous souhaitez en savoir plus sur l’outil ShareGate, nos experts sont là pour vous accompagner.