Hinweis: Für die PowerShell-Integration ist ein ShareGate Migrate Pro- oder Enterprise-Abonnement erforderlich. Sie ist im Essentials-Plan nicht verfügbar.
Das Skript identifiziert zwei Arten von Postfachordnern, die ShareGate Migrate nicht kopiert:
Nicht erkannt: Ordner mit nicht standardmäßigen Containerklassen (wie
IPF.ImapoderIPF.SkypeTeams.Message), die ShareGate Migrate nicht erkennen kann. Diese Ordner erscheinen nicht in Ihrem Migrationsbericht.Standardmäßig übersprungen: Bekannte Systemordner, die ShareGate Migrate erkennt, aber nicht kopiert:
ConversationHistory,Clutter,SyncIssues,Conflicts,LocalFailures,ServerFailures,RecoverableItemsDeletionsundSearchFolders. Diese werden im Migrationsbericht ebenfalls nicht gekennzeichnet.
Führen Sie Get-NonMigratableMailboxFolders.ps1 vor oder nach einer Migration aus, um beide Arten zu identifizieren und mögliche Lücken in der Abdeckung zu bewerten.
Voraussetzungen
Windows PowerShell (für optimale Ergebnisse wird die Verwendung der Eingabeaufforderung empfohlen)
Zugriff auf das Quellpostfach mit Exchange Online-Berechtigungen
Das Skript ausführen
Kopieren Sie das untenstehende Skript, speichern Sie es als Get-NonMigratableMailboxFolders.ps1 und führen Sie es dann über die Eingabeaufforderung aus.
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
}
Ergebnisse in der Konsole ausgeben:
.\Get-NonMigratableMailboxFolders.ps1 -Mailbox "[email protected]"
Ergebnisse in eine CSV-Datei exportieren:
.\Get-NonMigratableMailboxFolders.ps1 -Mailbox "[email protected]" -CsvOutputPath "C:\Reports\non-migratable-folders.csv"
Die exportierte Datei enthält für jeden Ordner eine Spalte Reason mit dem Wert NotDetected oder SkippedByDesign.
Problembehandlung
Fehler bei der Modulinstallation
Wenn beim Installieren des Moduls ExchangeOnlineManagement durch das Skript ein Fehler auftritt, öffnen Sie das Skript in einem Texteditor und fügen Sie der Zeile Install-Module -AllowClobber hinzu:
Install-Module -Name $ModuleName -RequiredVersion $RequiredVersion -Scope CurrentUser -Force -AllowClobber
Dieser Artikel wurde mit künstlicher Intelligenz übersetzt. Bei Unklarheiten konsultieren Sie bitte die englische Originalversion.
