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.