Differences
This shows you the differences between two versions of the page.
| 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 месяцев в папке " | ||
| - | Для работы требуется //EWS Managed API 2.2//. | + | Для работы требуется //EWS Managed API 2.2// и данные учётной записи, |
| + | |||
| + | < | ||
| + | # Загрузить EWS Managed API | ||
| + | Add-Type -Path " | ||
| + | |||
| + | # Учетные данные | ||
| + | $mailbox = " | ||
| + | $username = " | ||
| + | $password = " | ||
| + | |||
| + | $secure = ConvertTo-SecureString $password -AsPlainText -Force | ||
| + | $cred = New-Object System.Net.NetworkCredential($username, | ||
| + | |||
| + | # Создаем сервис EWS | ||
| + | $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService( | ||
| + | [Microsoft.Exchange.WebServices.Data.ExchangeVersion]:: | ||
| + | ) | ||
| + | |||
| + | $service.Credentials = $cred | ||
| + | $service.AutodiscoverUrl($mailbox, | ||
| + | |||
| + | # Дата начала (6 месяцев назад) | ||
| + | $startDate = (Get-Date).AddMonths(-18) | ||
| + | |||
| + | # Счетчик дней недели | ||
| + | $stats = @{ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | # Найти Inbox | ||
| + | $Inbox = [Microsoft.Exchange.WebServices.Data.Folder]:: | ||
| + | $service, | ||
| + | [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]:: | ||
| + | ) | ||
| + | |||
| + | # Получить все подпапки Inbox | ||
| + | $folderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1000) | ||
| + | $folderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]:: | ||
| + | |||
| + | $folders = $service.FindFolders($Inbox.Id, | ||
| + | |||
| + | # Добавить сам Inbox | ||
| + | $allFolders = @($Inbox) | ||
| + | $allFolders += $folders.Folders | ||
| + | |||
| + | foreach ($folder in $allFolders) | ||
| + | { | ||
| + | Write-Host " | ||
| + | |||
| + | $itemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000) | ||
| + | |||
| + | do { | ||
| + | |||
| + | $results = $service.FindItems($folder.Id, | ||
| + | |||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | {{tag> | ||