Назад | Перейти на главную страницу

Как вывести список содержимого почтового ящика Exchange 2003

Все, я пытаюсь экспортировать список содержимого почтовых ящиков Exchange 2003 в файл CSV. В частности, я пытаюсь получить путь к папке, тему, размер, время получения, время отправки (необязательно) и идентификатор сообщения (также необязательно) каждого сообщения в почтовом ящике пользователя.

У меня это работает в Exchange 2007 и более поздних версиях с использованием API веб-служб Exchange, но это не применимо к 2003 году.

WebDAV не включен в среде, и в настоящее время я работаю над проверкой доступности POP3 / IMAP. Если это не так, есть ли другой способ сделать это, что мне не хватает?

Вы не предоставили много информации о том, какой у вас доступ к системе или почтовому ящику, к которому вы пытаетесь получить доступ. Если вы являетесь администратором Exchange для этого сервера, вероятно, проще всего добавить для вас доступ для чтения к рассматриваемому почтовому ящику и использовать exmerge, чтобы скопировать его в другую учетную запись, или если у вас есть Access, установленный как часть вашего Office Suite, вы можете использовать «Получить внешние данные» в Access, чтобы получать электронную почту из Outlook, и можно добавить поле даты. Из Access вы можете очень просто выгрузить таблицу в Excel (или csv).

К сожалению, API веб-служб обмена НЕ работает с Exchange 2003 или SBS.

Поскольку это 2003 год, о котором вы говорите, вы можете использовать WMI или PowerShell, чтобы делать то, о чем вы думаете.

У Брайана Десмонда есть сценарий WMI на своем сайте, который может получать такую ​​информацию. Этот сценарий сбрасывает довольно много полезной информации о каждом почтовом ящике на определенном сервере или наборе серверов в файл CSV, который вы, в свою очередь, можете импортировать в Excel и создать из него электронную таблицу. Обычно я импортирую данные в таблицу SQL Server, используя DTS (службы преобразования данных), если мне нужно выполнять много вычислений или интеллектуального анализа данных. Excel очень медленно выполняет задачи, которые действительно требуют индексации большого количества данных.

Примечание. Для получения этой информации сценарий использует WMI, поэтому требуется Exchange 2003. В Active Directory требуются только разрешения уровня «Только просмотр Exchange», однако вам, вероятно, потребуются права локального администратора на каждом сервере Exchange. У меня нет сервера Exchange 2003, доступного для тестирования, и он работал как полный администратор Exchange, когда изначально писал этот сценарий. Так что используйте на свой страх и риск! Взято из: http://briandesmond.com/blog/script-to-dump-exchange-mailbox-info-to-spreadsheet-csv/

    '==========================================================================
' NAME   : Exchange Mailbox Stats Dumper
' AUTHOR : Brian Desmond, brian@briandesmond.com
' DATE   : 12/28/2005
' COMMENT: This script requires Exchange 2003. It will dump information
'           about each mailbox on the mailbox servers specified
'
'   Version     Date        Author          Note
'   -----------------------------------------------------------------
'   1.0         28Nov05     Brian Desmond   Initial Version
'   1.1         03Sep06     Brian Desmond   
'   1.2         13Dec08     Brian Desmond   Fixed array sizing bug,
'                                           Added error handling note
'                                           Added TODOs
'                                           Moved configurable items up
'==========================================================================
Option Explicit

' Note this script currently uses On Error Resume Next
' this isn't best practice - in reality this should be tightly 
' wrapped around the WMI connection logic in the loop rather
' than up here.
On Error Resume Next

' TODO: Configure this
' This is the total number of servers which you
' will specify for inventory
Const TOTAL_SERVERS = 3

Dim strComputer()
ReDim strComputer(TOTAL_SERVERS)

' TODO: Populate this array
' Enter each server name below as an entry in the array
' starting with zero
strComputer(0) = "xmb01"
strComputer(1) = "xmb02"
strComputer(2) = "xmb03"

'==========================================================================

Dim objWMIService
Dim colItems

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim fil
Set fil = fso.CreateTextFile("mailboxes.txt")

Dim objItem
Dim line
Dim i

' Write a header row to the CSV
fil.WriteLine """Server"",""Storage Group"",""Mail Store"",""Mailbox GUID"",""Display Name"",""LegacyDN"",""Size"",""Item Count"",""Associated Content Count"",""Deleted Message Size"",""Date Absent"",""Storage Limit Level"""

For i = 0 To TOTAL_SERVERS - 1
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer(i) & _
            "\ROOT\MicrosoftExchangeV2")

    Set colItems = objWMIService.ExecQuery _
        ("Select * from Exchange_Mailbox")

    For Each objItem in colItems
        line = """" & objItem.ServerName & """"
        line = line & ","
        line = line & """" & objItem.StorageGroupName & """"
        line = line & ","
        line = line & """" & objItem.StoreName & """"
        line = line & ","
        line = line & """" & objItem.MailboxGUID & """"
        line = line & ","
        line = line & """" & objItem.MailboxDisplayName & """"    
        line = line & ","
        line = line & """" & objItem.LegacyDN & """"
        line = line & ","
        line = line & """" & objItem.Size & """"
        line = line & ","
        line = line & """" & objItem.TotalItems & """"
        line = line & ","
        line = line & """" & objItem.AssocContentCount & """"
        line = line & ","
        line = line & """" & objItem.DeletedMessageSizeExtended & """"
        line = line & ","
        line = line & """" & objItem.DateDiscoveredAbsentInDS & """"
        line = line & ","
        line = line & """" & objItem.StorageLimitInfo & """"

        fil.WriteLine line 
        'WScript.Echo line 
    Next
Next

fil.Close
Set fso = Nothing
Set objWMIService = Nothing