Note : L'intégration PowerShell nécessite un abonnement Pro ou Enterprise à ShareGate Migrate. Elle n'est pas disponible avec le plan Essentials.
Le script identifie deux types de dossiers de boîte aux lettres que ShareGate Migrate ne copiera pas :
Non détectés — dossiers avec des classes de conteneur non standard (comme
IPF.ImapouIPF.SkypeTeams.Message) que ShareGate Migrate ne peut pas voir. Ces dossiers n'apparaissent pas dans votre rapport de migration.Ignorés par conception — dossiers système bien connus que ShareGate Migrate détecte mais ne copie pas :
ConversationHistory,Clutter,SyncIssues,Conflicts,LocalFailures,ServerFailures,RecoverableItemsDeletionsetSearchFolders. Ceux-ci ne sont pas non plus signalés dans le rapport de migration.
Exécutez Get-NonMigratableMailboxFolders.ps1 avant ou après une migration pour identifier les deux types et évaluer les éventuels manques de couverture.
Prérequis
Windows PowerShell (l'utilisation de l'invite de commandes est recommandée pour de meilleurs résultats)
Accès à la boîte aux lettres source avec les autorisations Exchange Online
Exécuter le script
Copiez le script ci-dessous et enregistrez-le sous Get-NonMigratableMailboxFolders.ps1, puis exécutez-le depuis l'invite de commandes.
param(
# Change this to the mailbox you want to scan
[Parameter(Mandatory = $true)]
[string]$Mailbox,
# Optional: provide a file path to also export the results as a CSV
[Parameter(Mandatory = $false)]
[string]$CsvOutputPath
)
$ErrorActionPreference = 'Stop'
$ModuleName = "ExchangeOnlineManagement"
$RequiredVersion = "3.9.0"
$module = Get-Module -ListAvailable -Name $ModuleName | Where-Object { $_.Version -eq [Version]$RequiredVersion }
if (-not $module) {
Install-Module -Name $ModuleName -RequiredVersion $RequiredVersion -Scope CurrentUser -Force
}
Import-Module -Name $ModuleName -RequiredVersion $RequiredVersion -Force
Connect-ExchangeOnline -ShowBanner:$false
try {
Write-Host "Scanning mailbox: $Mailbox" -ForegroundColor Cyan
$folders = Get-MailboxFolderStatistics -Identity $Mailbox |
Select-Object Name, FolderPath, FolderType, ContainerClass
$nonDetectable = @($folders | Where-Object {
$class = $_.ContainerClass
-not (
[string]::IsNullOrEmpty($class) -or
$class -eq 'IPF.Note' -or $class -like 'IPF.Note.*' -or
$class -eq 'IPF.Appointment' -or $class -like 'IPF.Appointment.*' -or
$class -eq 'IPF.Contact' -or $class -like 'IPF.Contact.*' -or
$class -eq 'IPF.Task' -or $class -like 'IPF.Task.*'
)
})
$skippedFolderTypes = @(
'ConversationHistory',
'Clutter',
'SyncIssues',
'Conflicts',
'LocalFailures',
'ServerFailures',
'RecoverableItemsDeletions',
'SearchFolders'
)
$skippedByDesign = @($folders | Where-Object { $skippedFolderTypes -contains $_.FolderType })
if ($nonDetectable.Count -eq 0) {
Write-Host "No non-detectable folders found." -ForegroundColor Green
}
else {
Write-Host "`nFolders that will NOT be detected by ShareGate ($($nonDetectable.Count) found):" -ForegroundColor Yellow
$nonDetectable | Format-Table Name, FolderPath, FolderType, ContainerClass -AutoSize
}
if ($skippedByDesign.Count -eq 0) {
Write-Host "No folders skipped by design found." -ForegroundColor Green
}
else {
Write-Host "`nFolders that ShareGate detects but skips by design ($($skippedByDesign.Count) found):" -ForegroundColor Yellow
$skippedByDesign | Format-Table Name, FolderPath, FolderType, ContainerClass -AutoSize
}
if ($CsvOutputPath) {
$report = @()
$report += $nonDetectable | Select-Object @{ Name = 'Reason'; Expression = { 'NotDetected' } }, Name, FolderPath, FolderType, ContainerClass
$report += $skippedByDesign | Select-Object @{ Name = 'Reason'; Expression = { 'SkippedByDesign' } }, Name, FolderPath, FolderType, ContainerClass
$report | Export-Csv -LiteralPath $CsvOutputPath -NoTypeInformation -Encoding UTF8
Write-Host "Report exported to: $CsvOutputPath" -ForegroundColor Green
}
}
finally {
Disconnect-ExchangeOnline -Confirm:$false
}
Pour afficher les résultats dans la console :
.\Get-NonMigratableMailboxFolders.ps1 -Mailbox "[email protected]"
Pour exporter les résultats dans un fichier CSV :
.\Get-NonMigratableMailboxFolders.ps1 -Mailbox "[email protected]" -CsvOutputPath "C:\Reports\non-migratable-folders.csv"
Le fichier exporté inclut une colonne Reason avec la valeur NotDetected ou SkippedByDesign pour chaque dossier.
Dépannage
Erreur d'installation du module
Si vous voyez une erreur lorsque le script tente d'installer le module ExchangeOnlineManagement, ouvrez le script dans un éditeur de texte et ajoutez -AllowClobber à la ligne Install-Module :
Install-Module -Name $ModuleName -RequiredVersion $RequiredVersion -Scope CurrentUser -Force -AllowClobber
"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."
