Note : L’intégration PowerShell nécessite un abonnement Pro ou Enterprise à ShareGate Migrate. Elle n’est pas disponible avec le plan Essentials.
Vous pouvez utiliser une boucle foreach pour copier vers et depuis plusieurs emplacements listés dans un fichier CSV.
Voici à quoi ressemble une instruction foreach :
foreach ($row in $table) { commands to be repeated for each row in your CSV }
Les lignes que vous ajoutez entre les accolades de votre instruction foreach sont répétées pour chaque ligne de votre fichier CSV. Cela vous permet de définir une liste de paramètres, comme les URL de sites, les noms de listes, les vues de listes, etc., pour piloter le déroulement de votre migration.
Note : Depuis fin janvier 2026, Microsoft a commencé à déprécier le cookie IDCRL, ce qui signifie que seules les méthodes d’authentification Browser et Modern authentication avec les paramètres -Browser et -ModernAuth fonctionneront dans la plupart des locataires Microsoft 365. Pour en savoir plus sur ce changement, consultez Changement important concernant l’authentification « Autre utilisateur » pour Microsoft 365.
Exemples
Copier une page vers plusieurs sites avec Copy-Content
Cet exemple utilise la commande copy-content pour copier une page d’accueil depuis la bibliothèque Site Pages d’une source vers plusieurs autres bibliothèques Site Pages. Le site de destination est la seule variable qui change à chaque passage de la boucle foreach.
Créer un guide CSV pour votre migration
Créez un nouveau document Excel.
Nommez la première colonne DestSite.
Listez les URL de tous les sites où vous souhaitez copier la page d’accueil.
Enregistrez le fichier au format CSV.
Créez votre script
Copiez et collez le script suivant dans l’application PowerShell de votre choix.
Import-Module Sharegate
# Définir le chemin du fichier CSV
$csvFile = "C:\CSVfile.csv"
# Importer les données CSV dans une table
$table = Import-Csv $csvFile -Delimiter ","
# Se connecter au site source et obtenir la liste source
$srcSite = Connect-Site -Url "https://sourcetenant.sharepoint.com/sites/sitecollection" -Browser
$srcList = Get-List -Site $srcSite -Name "Site Pages"
# Définir la connexion de destination
$dstSiteConnection = Connect-Site -Url "https://destinationtenantname-admin.sharepoint.com/" -Browser
# Boucle sur chaque ligne du CSV
foreach ($row in $table) {
# Réinitialiser les variables précédentes pour le site et la liste de destination
Clear-Variable -Name dstSite -ErrorAction SilentlyContinue
Clear-Variable -Name dstList -ErrorAction SilentlyContinue
# Se connecter au site de destination et obtenir la liste de destination
$dstSite = Connect-Site -Url $row.DestSite -UseCredentialsFrom $dstSiteConnection
$dstList = Get-List -Name "Site Pages" -Site $dstSite
# Copier le contenu de la liste source vers la liste de destination
Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFilePath "Home.aspx"
}
Adaptez votre script selon vos besoins. Voici quelques conseils :
$csvFile : Modifiez le chemin pour qu’il pointe vers le fichier CSV que vous avez enregistré précédemment.
$table : Le séparateur est le symbole utilisé dans votre CSV pour séparer les éléments de colonne. Assurez-vous que votre script utilise le même séparateur que votre fichier (pour vérifier rapidement, ouvrez le CSV dans le Bloc-notes).
Connect-site : cet exemple utilise
-Browserpour se connecter à Microsoft 365 au lieu de-ModernAuthcar ce dernier présente des limitations avec les pages classiques et les web parts classiques. Pour changer la méthode d’authentification, consultez l’article Connect Site.$srcSite et $srcList : Les variables du site source et de la liste source sont placées en dehors de la boucle foreach. Cela permet de prendre la page Home.aspx depuis la même bibliothèque Site Pages à chaque passage de la boucle.
$dstSiteConnection : Modifiez l’URL pour qu’elle corresponde à l’adresse de votre SharePoint admin center.
Set-Variable et Clear-Variable : Ces commandes permettent d’éviter qu’une erreur de connexion n’envoie vos données vers la mauvaise destination.
foreach : Répète les commandes entre les accolades pour chaque ligne de votre fichier CSV. Ici, cela lance une copie du fichier Home.aspx pour Sitecollection1, puis la même migration pour Sitecollection2, etc.
Copy-Content : -SourceFilePath permet de spécifier le fichier à copier. Ici, il s’agit de Home.aspx qui doit se trouver à la racine de la bibliothèque Site Pages. Si vous souhaitez copier un autre fichier dans un dossier, vous devez indiquer le chemin relatif à la bibliothèque (dossier/custompage.aspx).
-UseCredentialsFrom : Ce script utilise l’authentification Browser avec le paramètre -UseCredentialsFrom pour réutiliser une seule connexion. Ce script vous demandera vos informations d’identification Microsoft 365 au démarrage. Pour en savoir plus ou modifier ce comportement, consultez Connect-Site et Éviter de saisir plusieurs fois vos informations d’identification avec les méthodes de connexion Browser et Modern.
Lancez votre script une fois qu’il est correctement ajusté et testé.
Modifier votre script
Voici un exemple pour ajouter des variables à votre script avec la boucle foreach : vous pouvez copier une page différente par site avec ce même script :
Ajoutez une nouvelle colonne SrcPage dans votre CSV.
Indiquez le nom de la page à migrer depuis la bibliothèque Site Pages source pour chaque site de la liste.
Enregistrez votre CSV modifié.
Modifiez votre script en remplaçant "Home.aspx" par $row.SrcPage sur la ligne Copy-Content.
Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFilePath $row.SrcPage
Lancez le script, et tous les sites recevront la page que vous avez spécifiée dans la bibliothèque Site Pages de destination.
Fusionner plusieurs collections de sites d’une ferme SharePoint vers un locataire Microsoft 365
Cet exemple utilise la commande copy-site pour fusionner vos collections de sites d’une ferme SharePoint vers de nouvelles collections de sites dans Microsoft 365. Les variables qui changent à chaque passage de la boucle foreach sont les URL des sites source et destination.
Créer un guide CSV pour votre migration
Créez un nouveau document Excel.
Nommez la première colonne SourceSite.
Nommez la deuxième colonne DestSite.
Listez les URL appropriées des collections de sites source et destination.
Note : Vous pouvez utiliser le rapport de collection de sites pour obtenir la liste de vos collections de sites.Enregistrez le fichier au format CSV.
Créez votre script
Copiez et collez le script suivant dans l’application PowerShell de votre choix.
Import-Module Sharegate
# Définir le chemin du fichier CSV
$csvFile = "C:\CSVfile.csv"
# Importer les données CSV dans une table
$table = Import-Csv $csvFile -Delimiter ","
# Informations d’identification source
$srcUsername = "sourceusername"
$srcPassword = ConvertTo-SecureString 'sourcepassword' -AsPlainText -Force
# Connexion de destination
$dstSiteConnection = Connect-Site -Url "https://destinationtenantname-admin.sharepoint.com" -ModernAuth
# Définir les variables pour les sites source et destination
Set-Variable -Name srcSite, dstSite
# Boucle sur chaque ligne du CSV
foreach ($row in $table) {
# Réinitialiser les variables précédentes pour les sites source et destination
Clear-Variable -Name srcSite -ErrorAction SilentlyContinue
Clear-Variable -Name dstSite -ErrorAction SilentlyContinue
# Se connecter aux sites source et destination
$srcSite = Connect-Site -Url $row.SourceSite -Username $srcUsername -Password $srcPassword
$dstSite = Connect-Site -Url $row.DestSite -UseCredentialsFrom $dstSiteConnection
# Copier le site de la source vers la destination
Copy-Site -Site $srcSite -DestinationSite $dstSite -Merge -Subsites
}
Adaptez votre script selon vos besoins. Voici quelques conseils :
$csvFile : Modifiez le chemin pour qu’il pointe vers le fichier CSV que vous avez enregistré précédemment.
$table : Le séparateur est le symbole utilisé dans votre CSV pour séparer les éléments de colonne. Assurez-vous que votre script utilise le même séparateur que votre fichier (pour vérifier rapidement, ouvrez le CSV dans le Bloc-notes).
$srcUsername, $srcPassword : Remplacez "sourceusername" et 'sourcepassword' par vos informations d’identification SharePoint.
$dstSiteConnection : Remplacez l’URL par l’adresse du SharePoint admin center de votre locataire de destination.
Connect-site : La commande pour se connecter à un site SharePoint. Si vous devez changer la méthode d’authentification, consultez Connect Site.
Set-Variable et Clear-Variable : Ces commandes permettent d’éviter qu’une erreur de connexion n’envoie vos données vers la mauvaise destination.
foreach : Répète les commandes entre les accolades pour chaque ligne de votre fichier CSV. Ici, cela fusionne sitecollection1 de votre source vers sitecollection1 de votre destination, puis sitecollection2 vers sitecollection2, etc.
-UseCredentialsFrom : Ce script utilise l’authentification Modern avec le paramètre -UseCredentialsFrom pour réutiliser une seule connexion. Ce script vous demandera vos informations d’identification Microsoft 365 au démarrage. Si l’authentification multifacteur (MFA) n’est pas activée sur votre/vos locataire(s), vous pouvez configurer votre script pour utiliser un nom d’utilisateur et un mot de passe pour une planification sans surveillance. L’authentification Modern présente certaines limitations pour la copie. Pour en savoir plus, consultez Connect-Site et Éviter de saisir plusieurs fois vos informations d’identification avec les méthodes de connexion Browser et Modern.
Copy-Site : Sans les paramètres -Merge et -Subsites, le script copierait la collection de sites source comme un sous-site de la collection de sites de destination et n’inclurait pas les sous-sites de la source.
Lancez votre script une fois qu’il est correctement ajusté et testé.
À prendre en compte
Rapports de migration
Les rapports de migration sont générés automatiquement et vous pourrez les retrouver dans Tasks. Vous pouvez également exporter les rapports dans votre script avec Export-Report.
Planification
Vous pouvez planifier votre migration pour l’exécuter en dehors des heures de bureau et optimiser les performances.
Migrations incrémentales
Copy & Replace est utilisé par défaut avec PowerShell. Vous trouverez comment adapter votre script pour effectuer une migration incrémentale dans l’article Mise à jour incrémentale avec PowerShell.
Performance
Si vous avez des centaines de gigaoctets de données à migrer, nous vous recommandons de créer plusieurs fichiers CSV afin d’effectuer la migration en plus petits lots.
"Cet article a été traduit à l’aide de l’intelligence artificielle. En cas de doute, veuillez vous référer à la version originale en anglais."


