Os ficheiros PST são o legado mais problemático em qualquer migração para Exchange Online. Espalhados por PCs de utilizadores, servidores de ficheiros e discos externos, podem estar corrompidos, bloqueados pelo Outlook, demasiado grandes para importar directamente ou simplesmente impossíveis de localizar. A Microsoft disponibiliza três métodos de importação, cada um com casos de uso específicos, limitações e requisitos técnicos distintos.

Este artigo cobre os três métodos de migração de PST para Exchange Online — importação via Outlook, Network Upload com AzCopy e importação PowerShell com New-MailboxImportRequest — com pré-requisitos, armadilhas comuns e monitorização de progresso.

⚠ PSTs nunca devem ficar na pasta OneDrive

O Outlook mantém o ficheiro PST aberto em modo exclusivo — o OneDrive não consegue sincronizá-lo e pode corrompê-lo ao tentar. Localizar todos os PSTs e movê-los para fora da pasta OneDrive antes de iniciar qualquer migração.

1. Comparar os três métodos

Método Escala Custo Complexidade Ideal para
Outlook Import/Export 1–5 PSTs Gratuito Baixa Utilizador individual, PST pessoal, migração pontual
Network Upload (AzCopy + Purview) Muitos PSTs Gratuito Média-Alta Migração organizacional — método recomendado para múltiplos utilizadores
Drive Shipping >1 TB $2/GB Alta Volumes muito grandes sem largura de banda adequada. Disponibilidade limitada por país
PowerShell (New-MailboxImportRequest) Qualquer Gratuito Média PSTs acessíveis via SMB ou SharePoint Online; automatização e bulk imports

2. Pré-requisitos e preparação dos PSTs

Para os métodos Network Upload e PowerShell, o administrador precisa da role Mailbox Import Export — não está atribuída por defeito, nem ao Global Admin.

Connect-ExchangeOnline -UserPrincipalName [email protected]

# Atribuir role Mailbox Import Export
New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "[email protected]"
# Fazer logout e login — a role demora até 60 minutos a propagar

# Inventariar PSTs em todos os PCs (executar em cada PC ou via RMM)
Get-ChildItem -Path "C:\" -Recurse -Filter *.pst -ErrorAction SilentlyContinue |
    Select-Object FullName, @{N="TamanhoGB";E={[math]::Round($_.Length/1GB,2)}} |
    Format-Table -AutoSize
Verificação Como fazer Porquê
Reparar com ScanPST.exe C:\Program Files\Microsoft Office\root\Office16\SCANPST.EXE → abrir PST → reparar PSTs corrompidos falham sem mensagem clara
Verificar tamanho — idealmente <20 GB Explorador de ficheiros → propriedades PSTs grandes têm maior probabilidade de falhar. Dividir com OutlookSplit
Fechar o PST no Outlook antes do upload File → Account Settings → Data Files → remover o PST da lista Outlook mantém lock exclusivo — AzCopy falha se o ficheiro estiver aberto

3. Método 1 — Importação via Outlook (pequena escala)

O método mais simples para 1 a 5 PSTs. O utilizador importa directamente através do Outlook — os itens são copiados para a caixa de correio Exchange Online. Requer Outlook instalado e conta Exchange Online configurada no perfil.

  1. Outlook: File → Open & Export → Import/Export
  2. Seleccionar “Import from another program or file” → Next
  3. Seleccionar “Outlook Data File (.pst)” → Next
  4. Navegar até ao ficheiro PST → seleccionar Do not import duplicates
  5. Seleccionar pasta de destino — a caixa de correio Exchange Online do utilizador
  6. Clicar Finish — o Outlook sincroniza os itens com o servidor Exchange Online

4. Método 2 — Network Upload com AzCopy (recomendado)

Caminho: compliance.microsoft.com → Data lifecycle management → Microsoft 365 → Import → Import PST files → Upload your data

  1. Criar novo Import Job e seleccionar “Upload your data”
  2. Copiar o SAS URL apresentado pelo portal (válido 30 dias) e fazer download do AzCopy
  3. Fazer upload dos PSTs com AzCopy (ver comando abaixo)
  4. Preparar o ficheiro CSV de mapeamento (ver Secção 5)
  5. Fazer upload do CSV no portal e iniciar a importação
# Upload de pasta com PSTs para Azure Storage (substituir URL pelo SAS URL do portal)
.\azcopy copy "C:\PSTs_para_migrar\" "https://[tenant].blob.core.windows.net/ingestiondata?[SAS-token]" --recursive

# Verificar o que foi carregado
.\azcopy list "https://[tenant].blob.core.windows.net/ingestiondata?[SAS-token]"

⚠ Prazo de 30 dias: Os PSTs carregados para o Azure Storage têm de ser mapeados num Import Job dentro de 30 dias. Após esse prazo são eliminados automaticamente.

5. Ficheiro CSV de mapeamento PST → caixa de correio

O ficheiro CSV define qual PST vai para qual caixa de correio e para qual pasta de destino. Guardar em codificação UTF-8 sem BOM — usar Notepad++ ou VS Code, não o Excel (que adiciona BOM e invalida o CSV).

# Cabeçalho obrigatório (copiar exactamente)
Workload,FilePath,Name,Mailbox,IsArchive,TargetRootFolder,ContentCodePage,SPFileContainer,SPManifestContainer,SPSiteUrl

# Importar para caixa principal (raiz)
Exchange,,joao.ferreira.pst,[email protected],FALSE,/,,,,

# Importar para o arquivo online
Exchange,,joao.ferreira_old.pst,[email protected],TRUE,/,,,,

# Importar para pasta específica
Exchange,,joao.ferreira_2020.pst,[email protected],FALSE,/Arquivo PST 2020,,,,

# Importar para shared mailbox
Exchange,,geral.pst,[email protected],FALSE,/,,,,

6. Método 3 — PowerShell com New-MailboxImportRequest

Ideal para PSTs acessíveis via partilha de rede (UNC) — permite automação e bulk imports sem passar pelo portal Purview. O ficheiro PST tem de estar acessível a partir de uma partilha de rede, não de um caminho local.

⚠ Requisito crítico: O cmdlet acede ao PST via UNC — não funciona com caminhos locais C:\. O ficheiro tem de estar numa partilha de rede acessível pelo serviço Exchange Online.

# Importar PST via UNC para caixa principal
New-MailboxImportRequest -Mailbox "[email protected]" `
    -FilePath "\\servidor\psts\joao.ferreira.pst" `
    -Name "Import-JoaoFerreira" `
    -TargetRootFolder "/"

# Importar para arquivo online
New-MailboxImportRequest -Mailbox "[email protected]" `
    -FilePath "\\servidor\psts\joao.antigo.pst" `
    -Name "Import-JoaoFerreira-Arquivo" `
    -IsArchive -TargetRootFolder "/"

# Bulk import de todos os PSTs numa pasta (nome_ficheiro = UPN sem domínio)
Get-ChildItem "\\servidor\psts\" -Filter *.pst | ForEach-Object {
    $mailbox = $_.BaseName + "@empresa.pt"
    New-MailboxImportRequest -Mailbox $mailbox -FilePath $_.FullName `
        -Name "Import-$($_.BaseName)" -TargetRootFolder "/"
    Write-Host "Iniciado: $($_.Name) → $mailbox"
}

7. Monitorizar e gerir importações em curso

# Ver estado de todos os pedidos
Get-MailboxImportRequest | Select-Object Name, Mailbox, Status, PercentComplete | Format-Table -AutoSize

# Detalhe de um pedido específico
Get-MailboxImportRequestStatistics -Identity "Import-JoaoFerreira" |
    Select-Object Name, StatusDetail, PercentComplete, BytesTransferred, ItemsTransferred, FailedItemCount

# Importações falhadas
Get-MailboxImportRequest -Status Failed | Select-Object Name, Mailbox, StatusDetail

# Retomar importação falhada
Resume-MailboxImportRequest -Identity "Import-JoaoFerreira"

# Limpar pedidos concluídos
Get-MailboxImportRequest -Status Completed | Remove-MailboxImportRequest -Confirm:$false

8. Armadilhas comuns e como evitá-las

Armadilha Como se manifesta Prevenção / Resolução
PST corrompido Importação falha ou completa parcialmente sem mensagem clara Executar ScanPST.exe antes de qualquer migração
PST aberto pelo Outlook AzCopy falha com “file locked” Remover o PST do perfil Outlook antes de qualquer upload
Role Mailbox Import Export não activa Erro “insufficient access rights” Atribuir a role e fazer logout + login novamente (pode demorar 60 min)
Quota da caixa insuficiente Importação para com FailedItemCount elevado Verificar quota antes da migração. Importar para arquivo online com -IsArchive
CSV com codificação errada Validação do CSV no portal falha Guardar em UTF-8 sem BOM — usar Notepad++ ou VS Code, não Excel
SAS URL expirado AzCopy falha com erro 403 após 30 dias Gerar novo SAS URL no portal Purview e repetir o upload

9. Após a migração — o que fazer com os PSTs originais

  1. Período de quarentena (30–60 dias): Manter os PSTs acessíveis mas desligados do Outlook. Se o utilizador reportar emails em falta, a migração pode ser complementada
  2. Confirmar com o utilizador: Verificar emails importantes, pastas críticas e contactos antes de considerar a migração concluída
  3. Desligar os PSTs do Outlook: File → Account Settings → Data Files → remover o PST. O utilizador trabalha apenas com Exchange Online
  4. Arquivo ou eliminação: Após quarentena, mover para NAS de backup ou eliminar conforme política de retenção
  5. Bloquear criação de novos PSTs: Configurar GPO com políticas “Prevent users from adding new content to existing .pst files” e “Prevent users from creating new .pst files” (ADMX Office16)

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário