Requisitos

  • Tenha em mãos uma credencial (usuário e senha) que:
    • Possua maibox, e;
    • Que tenha acesso na(s) caixa(s) postal(is) que será(ão) consultada(s);
  • Baixe e instale o RSAT, para poder obter informações do Active Directory;
  • Baixe e instale o Microsoft Exchange Web Services Managed API (em alguns casos para instalar foi necessário abrir o prompt como administrador e executar o msiexec);
    • O caminho onde foi instalado será necessário;

Script PowerShell

Abra o Windows PowerShell ISE e coloque o seguinte conteúdo (altere as partes em cima conforme sua realidade ou necessidade):

Import-Module -Name "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
cls
$seudominio = "suaempresa.com.br"
$DNDomain =  "DC="+$seudominio.Replace(".",",DC=")
$psCred = Get-Credential
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2016)
$service.Credentials = New-Object System.Net.NetworkCredential($psCred.UserName.ToString(),$psCred.GetNetworkCredential().password.ToString());
$service.AutoDiscoverUrl($psCred.UserName.ToString())
$view = New-Object Microsoft.Exchange.WebServices.Data.FolderView(100)
$view.PropertySet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.Webservices.Data.BasePropertySet]::FirstClassProperties)
$view.PropertySet.Add([Microsoft.Exchange.Webservices.Data.FolderSchema]::DisplayName)
$view.Traversal = [Microsoft.Exchange.Webservices.Data.FolderTraversal]::Deep
$rootFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot)
#$mails=( "user0", "user1", "user2")
#ForEach ($mail in $mails)
#{
$Output = $null
Get-ADUser -Searchbase "CN=Users,$DNDomain" -Filter {(title -Like 'Analistas*')} | ForEach-Object {
     $userEmail = "$_.SamAccountName" + "@"+ $seudominio
     $Output = $Output+"`n "
     $InboxFolder= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$userEmail)
     $Inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$InboxFolder)
     $rootFolder.DisplayName
     $rootFolder.Load()
     $Output = $Output+"`n-----------------------------------------------------------"
     $Output = $Output+"`n$userEmail"
     $Output = $Output+"`n"
     $countUnread = 0
     $countTotal = 0
     foreach ($f in $Inbox.FindFolders($view))
     {
         if($f.UnreadCount -gt 0)
         {
             $Output = $Output+"`n-- $($f.DisplayName) -- $($f.UnreadCount)/$($f.TotalCount)"
             $countUnread += $f.UnreadCount
             $countTotal += $f.TotalCount
         }
     } 
     $Output = $Output+"`n"
     $Output = $Output+"`nTotal -- $countUnread/$countTotal"
}
$psCred = $null
Write-Host $Output
$Output | clip
Read-Host "Pressione ENTER to continuar…"

Fontes/Referências

http://iris77.net/?p=72
https://stackoverflow.com/questions/59092716/unread-emails-for-exchange-2016
https://www.codetwo.com/admins-blog/search-mailbox-exchange-2013-2016-online-attributes/
https://www.independentsoft.de/exchangewebservices/tutorial/findunreadmessages.html
https://www.microsoft.com/en-us/download/confirmation.aspx?id=42951
https://www.microsoft.com/pt-BR/download/details.aspx?id=45520

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria