The Magician

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
скрипт_вывода_статистики_ящика_ews [2026/03/06 07:58] – created jpскрипт_вывода_статистики_ящика_ews [2026/03/06 08:00] (current) jp
Line 3: Line 3:
 Данный скрипт сделает поиск почты в ящике за последние 18 месяцев в папке "входящие" и вложенных подпапках, и посчитает количество писем по дням недели. К примеру - сколько за 18 месяцев было получено почты по понедельникам, сколько по вторникам и т.д. Результаты будут выведены в консоли.  Данный скрипт сделает поиск почты в ящике за последние 18 месяцев в папке "входящие" и вложенных подпапках, и посчитает количество писем по дням недели. К примеру - сколько за 18 месяцев было получено почты по понедельникам, сколько по вторникам и т.д. Результаты будут выведены в консоли. 
  
-Для работы требуется //EWS Managed API 2.2//.+Для работы требуется //EWS Managed API 2.2// и данные учётной записи, обладающей правами на ящик, в котором происходит поиск. 
 + 
 +<code> 
 +# Загрузить EWS Managed API 
 +Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll" 
 + 
 +# Учетные данные 
 +$mailbox = "user@arasaka.local" 
 +$username = "arasaka\user" 
 +$password = "password" 
 + 
 +$secure = ConvertTo-SecureString $password -AsPlainText -Force 
 +$cred = New-Object System.Net.NetworkCredential($username,$secure) 
 + 
 +# Создаем сервис EWS 
 +$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService( 
 +    [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2016 
 +
 + 
 +$service.Credentials = $cred 
 +$service.AutodiscoverUrl($mailbox, {$true}) 
 + 
 +# Дата начала (6 месяцев назад) 
 +$startDate = (Get-Date).AddMonths(-18) 
 + 
 +# Счетчик дней недели 
 +$stats = @{ 
 +    "Monday" = 0 
 +    "Tuesday" = 0 
 +    "Wednesday" = 0 
 +    "Thursday" = 0 
 +    "Friday" = 0 
 +    "Saturday" = 0 
 +    "Sunday" = 0 
 +
 + 
 +# Найти Inbox 
 +$Inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind( 
 +    $service, 
 +    [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox 
 +
 + 
 +# Получить все подпапки Inbox 
 +$folderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1000) 
 +$folderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep 
 + 
 +$folders = $service.FindFolders($Inbox.Id,$folderView) 
 + 
 +# Добавить сам Inbox 
 +$allFolders = @($Inbox) 
 +$allFolders += $folders.Folders 
 + 
 +foreach ($folder in $allFolders) 
 +
 +    Write-Host "Scanning:" $folder.DisplayName 
 + 
 +    $itemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000) 
 + 
 +    do { 
 + 
 +        $results = $service.FindItems($folder.Id,$itemView) 
 + 
 +        foreach ($item in $results.Items) 
 +        { 
 +            if ($item.DateTimeReceived -ge $startDate) 
 +            { 
 +                $day = $item.DateTimeReceived.DayOfWeek.ToString() 
 +                $stats[$day]++ 
 +            } 
 +        } 
 + 
 +        $itemView.Offset += $results.Items.Count 
 + 
 +    } while ($results.MoreAvailable) 
 +
 + 
 +# Вывод результата 
 +Write-Host "" 
 +Write-Host "Mail statistics for last 18 months:" 
 +$stats.GetEnumerator() | Sort-Object Name | Format-Table -AutoSize 
 +</code> 
 + 
 +{{tag>Exchange Microsoft Mail PowerShell EWS}}
скрипт_вывода_статистики_ящика_ews.1772783936.txt.gz · Last modified: by jp