Como Usar o PowerShell New-InboxRule para Implantar Regras em Várias Caixas de Correio
🔍 WiseChecker

Como Usar o PowerShell New-InboxRule para Implantar Regras em Várias Caixas de Correio

Gerenciar regras de caixa de entrada para vários usuários no Exchange Online ou Exchange Server pode ser demorado quando feito manualmente. Você precisa criar, atualizar ou substituir regras para dezenas ou centenas de caixas de correio sem abrir o Outlook de cada usuário. O cmdlet PowerShell New-InboxRule permite automatizar essa tarefa diretamente do Exchange Management Shell ou do módulo Exchange Online PowerShell. Este artigo explica como implantar regras de caixa de entrada em várias caixas de correio usando New-InboxRule, incluindo pré-requisitos, comandos passo a passo e erros comuns a evitar.

Principais Conclusões: Implantação de Regras de Caixa de Entrada com PowerShell

  • Cmdlet New-InboxRule: Cria uma nova regra de caixa de entrada para uma caixa de correio específica usando parâmetros como -Mailbox, -Name e condições ou ações da regra.
  • Loop ForEach com Get-Mailbox: Itera por uma lista filtrada de caixas de correio para aplicar a mesma regra a vários usuários em um único script.
  • Remove-InboxRule antes da implantação: Exclui regras existentes com o mesmo nome para evitar erros de regra duplicada ao atualizar regras.

ADVERTISEMENT

Entendendo o New-InboxRule e seus Requisitos

New-InboxRule é um cmdlet do Exchange PowerShell que cria uma regra de caixa de entrada no servidor para uma caixa de correio especificada. A regra é executada no servidor Exchange ou no Exchange Online, funcionando mesmo quando o Outlook do usuário está fechado. O cmdlet suporta condições comuns como endereço do remetente, palavras-chave no assunto e endereço do destinatário, e ações como mover para uma pasta, encaminhar ou excluir.

Antes de usar o New-InboxRule, você deve atender a estes requisitos:

  • Módulo PowerShell: Instale o módulo Exchange Online PowerShell V2 (EXO V2) para caixas de correio na nuvem, ou conecte-se a um Exchange Management Shell local.
  • Permissões: Você precisa da função Destinatários de Email ou ser membro do grupo de funções Gerenciamento da Organização ou Gerenciamento de Destinatários.
  • Tipo de caixa de correio: A caixa de correio de destino deve ser uma caixa de correio de usuário, não uma caixa de correio compartilhada ou de recurso, a menos que você habilite o automapeamento.
  • Existência da pasta: Se a regra mover mensagens para uma pasta, essa pasta já deve existir na caixa de correio de destino. O New-InboxRule não cria pastas.

Passos para Implantar uma Regra em uma Única Caixa de Correio

  1. Conectar ao Exchange
    Abra o Exchange Online PowerShell ou o Exchange Management Shell. Para Exchange Online, execute: Connect-ExchangeOnline -UserPrincipalName admin@seudominio.com. Para ambiente local, abra o Exchange Management Shell como administrador.
  2. Verificar se a caixa de correio de destino existe
    Execute Get-Mailbox -Identity usuario@seudominio.com | Format-List Name, RecipientTypeDetails para confirmar que a caixa de correio é do tipo UserMailbox e não compartilhada ou de recurso.
  3. Verificar se existe uma regra com o mesmo nome
    Execute Get-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo". Se a regra existir, remova-a primeiro: Remove-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo" -Confirm:$false.
  4. Criar a nova regra de caixa de entrada
    Execute o comando New-InboxRule com os parâmetros necessários. Exemplo: New-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo" -From "faturas@empresa.com" -MoveToFolder "usuario@seudominio.com:\Arquivo" -StopProcessing:$true. O parâmetro -StopProcessing:$true impede que outras regras sejam executadas após esta processar a mensagem.
  5. Testar a regra
    Envie um email de teste do remetente especificado para a caixa de correio. Verifique se a mensagem foi movida para a pasta de destino. Para confirmar as propriedades da regra, execute Get-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo" | Format-List.

ADVERTISEMENT

Implantando a Mesma Regra em Várias Caixas de Correio

Para aplicar uma regra a muitos usuários, use um loop ForEach com Get-Mailbox. Este exemplo move emails de um remetente específico para uma pasta Arquivo para todos os usuários do departamento de Vendas.

  1. Obter a lista de caixas de correio de destino
    Execute $mailboxes = Get-Mailbox -Filter {Department -eq "Vendas"} -ResultSize Unlimited. Isso armazena todas as caixas de correio do departamento de Vendas na variável $mailboxes.
  2. Percorrer cada caixa de correio e criar a regra
    Use este script:
    foreach ($mbx in $mailboxes) {
      Remove-InboxRule -Mailbox $mbx.Identity -Name "Mover Faturas para Arquivo" -Confirm:$false -ErrorAction SilentlyContinue
      New-InboxRule -Mailbox $mbx.Identity -Name "Mover Faturas para Arquivo" -From "faturas@empresa.com" -MoveToFolder ($mbx.Identity + ":\Arquivo") -StopProcessing:$true
    }

    A linha Remove-InboxRule usa -ErrorAction SilentlyContinue para que o script não pare se nenhuma regra existente for encontrada.
  3. Confirmar que as regras foram criadas
    Execute foreach ($mbx in $mailboxes) { Get-InboxRule -Mailbox $mbx.Identity -Name "Mover Faturas para Arquivo" | Format-Table MailboxName, Name, Enabled }. Isso mostra o nome da caixa de correio, o nome da regra e se a regra está habilitada.
  4. Lidar com caixas de correio sem a pasta de destino
    Se uma caixa de correio não tiver a pasta Arquivo, o comando falha. Para criar a pasta em cada caixa de correio antes de aplicar a regra, execute:
    foreach ($mbx in $mailboxes) {
      $folder = Get-MailboxFolder -Mailbox $mbx.Identity -FolderType Archive -ErrorAction SilentlyContinue
      if (-not $folder) { New-MailboxFolder -Mailbox $mbx.Identity -Name "Arquivo" -ParentPath "\" }
    }

    Em seguida, execute o loop de criação da regra novamente.

Usando Condições e Ações em Regras em Massa

O New-InboxRule suporta muitos parâmetros para condições e ações. Ao implantar regras em massa, você pode combinar parâmetros para atender a cenários específicos.

Parâmetros de condição comuns

  • -From: Corresponde a um endereço de email ou domínio específico do remetente.
  • -SubjectContainsWords: Corresponde a mensagens cujo assunto contenha qualquer uma das palavras especificadas.
  • -BodyContainsWords: Corresponde a mensagens cujo corpo contenha qualquer uma das palavras especificadas.
  • -SentTo: Corresponde a mensagens enviadas para um endereço de destinatário específico.
  • -HasAttachment: Corresponde a mensagens que tenham um ou mais anexos.

Parâmetros de ação comuns

  • -MoveToFolder: Move a mensagem para uma pasta especificada.
  • -CopyToFolder: Copia a mensagem para uma pasta especificada sem excluir a original.
  • -ForwardTo: Encaminha a mensagem para um destinatário especificado.
  • -DeleteMessage: Exclui a mensagem sem enviá-la para a pasta Itens Excluídos.
  • -MarkImportance: Define o nível de importância como Baixa, Normal ou Alta.

Exemplo: Crie uma regra que sinalize emails com anexos de remetentes externos para todos os usuários do departamento de TI.
foreach ($mbx in $mailboxes) {
  New-InboxRule -Mailbox $mbx.Identity -Name "Anexos Externos" -From "@" -HasAttachment:$true -MarkImportance High -StopProcessing:$false
}

ADVERTISEMENT

Erros Comuns na Implantação e Como Evitá-los

A criação da regra falha porque a pasta de destino não existe

O New-InboxRule não cria pastas automaticamente. Se uma regra fizer referência a uma pasta que não existe, o cmdlet retorna um erro. Sempre verifique ou crie a pasta antes de aplicar a regra. Use Get-MailboxFolder para verificar e New-MailboxFolder para criar a pasta, conforme mostrado nas etapas de implantação acima.

Nomes de regra duplicados causam erros

Cada caixa de correio pode ter apenas uma regra com um determinado nome. Se você executar New-InboxRule com o mesmo nome e a regra já existir, o cmdlet falha. Sempre chame Remove-InboxRule com -Confirm:$false antes de criar uma nova regra com o mesmo nome. Alternativamente, use um nome único por implantação, acrescentando um timestamp, como “Mover Faturas para Arquivo 2025-03-15”.

A regra não se aplica a mensagens já existentes na caixa de entrada

O New-InboxRule cria regras que se aplicam apenas a novas mensagens que chegam após a regra ser habilitada. Mensagens existentes na caixa de entrada não são afetadas. Para mover mensagens existentes, use Search-Mailbox ou o cmdlet Move-MailboxFolder, ou peça aos usuários que apliquem manualmente a regra à caixa de entrada atual no Outlook.

Identidade incorreta da caixa de correio no parâmetro MoveToFolder

O parâmetro MoveToFolder requer a identidade completa da caixa de correio e o caminho da pasta no formato "caixa@dominio.com:\Nome da Pasta". Se você usar uma variável como $mbx.Identity, certifique-se de que ela contenha o endereço SMTP ou GUID da caixa de correio. Usar $mbx.PrimarySmtpAddress é mais seguro que $mbx.Identity quando a identidade é um ID de objeto.

New-InboxRule vs Outros Métodos de Implantação de Regras

Item New-InboxRule (PowerShell) Criação Manual de Regras no Outlook
Escopo de implantação Caixa de correio única ou em massa via script Uma caixa de correio por vez
Automação Totalmente scriptável com loops e filtros Sem automação, requer interação com a GUI
Armazenamento da regra Regra no servidor Exchange ou Exchange Online Regra no servidor, mas criada via Outlook
Criação de pasta Deve ser feita separadamente com New-MailboxFolder Outlook cria a pasta automaticamente durante a configuração da regra
Tratamento de erros Requer verificação manual de erros nos scripts Outlook exibe diálogos de erro durante a criação
Reversão Use Remove-InboxRule em um loop Exclua regras manualmente em cada caixa de correio

Use o New-InboxRule quando precisar implantar a mesma regra para muitos usuários rapidamente. Use a criação manual apenas para regras pontuais ou ao testar uma nova regra em uma única caixa de correio antes da implantação em massa.

Agora você pode usar o New-InboxRule para implantar regras de caixa de entrada em várias caixas de correio no Exchange Online ou Exchange Server. Comece testando a regra em uma única caixa de correio e, em seguida, use o loop ForEach com Get-Mailbox para aplicá-la a um departamento ou a toda a organização. Sempre remova as regras existentes com o mesmo nome antes de criar novas para evitar erros. Para cenários avançados, combine várias condições e ações em um único comando New-InboxRule para lidar com necessidades complexas de roteamento de email.

ADVERTISEMENT