none
MS Exchange server 2013 Export mailbox не работает фильтр RRS feed

  • Вопрос

  • Господа кто сталкивался с проблемой:Необходимо выгрузить п\я в PST. Exchange shell

    $enddate=get-date -day 1 "00:00:00"
    $startdate=$enddate.AddMonths(-1)
    $month="{0:D2}" -f [int]$stardate.month
    $enddate=$enddate.ToShortDateString()
    $startdate=$startdate.ToShortDateString()
    New-MailboxExportRequest  -ContentFilter {(Received -gt $startdate) -and (Received -lt $enddate)} -mailbox $name -filepath $path

    Выгружается весь ящик, а не за промежуток времени.(content filter (sent) тоже самое).

    Если фильтр по Адресату например, то всё ок. Помогите кто знает очень нужно грузить за промежуток времени.

    18 ноября 2015 г. 5:44

Ответы

  • Потестировал вчера работу контент фильтра. Работает он в итоге только в en-us формате.

    Имеем Win 2012R2 Eng, Exchange 2013 Eng. Настройки Windows. Region->Format Russian.

    Пробую в формате dd/MM/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '01/11/2015') -and (Received -lt '17/11/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Ошибка: The provided ContentFilter value is invalid. ContentFilter is invalid. The value could not be converted to type System.DateTime.

    Пробую в формате MM/dd/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '11/01/2015') -and (Received -lt '11/17/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Запускается, но выгрузка проходит со статусом Failed создается pst в 265 Кб, в статистике в поле Messagge все та же ошибка The provided ContentFilter value is invalid. ContentFilter is invalid. The value could not be converted to type System.DateTime.

    Закрываю консоль EMS, меняю Настройки Windows. Region->Format English(United States). Если поменяете форматы с открытой консолью EMS, ничего не поменяется.

    Пробую в формате dd/MM/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '01/11/2015') -and (Received -lt '17/11/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Ошибка: The provided ContentFilter value is invalid. ContentFilter is invalid. The value could not be converted to type System.DateTime.

    Пробую в формате MM/dd/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '11/01/2015') -and (Received -lt '11/17/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Все отрабатывает, выгружает то что нужно.

    Ваш рабочий вариант скрипта в итоге выглядел так:

    $enddate=get-date -day 1 "00:00:00"
    $startdate=$enddate.AddMonths(-1)
    $enddate=$enddate.ToString('MM/dd/yyyy')
    $startdate=$startdate.ToString('MM/dd/yyyy')
    New-MailboxExportRequest -contentfilter "(Received -gt '$startdate') -and (Received -lt '$enddate')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Немного поменял синтаксис, т.к. в вашем варианте

    Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | select ContentFilter

    выдавал ((Received -ne $null) and (Received -ne $null)).

    • Предложено в качестве ответа ILYA [ sie ] SazonovModerator 19 ноября 2015 г. 7:54
    • Помечено в качестве ответа Daniil Sedov 19 ноября 2015 г. 8:36
    19 ноября 2015 г. 7:28
  • Победил и этот вопрос. Меня интересовала удаленная сессия так что на примере PSSesion:

    $Session = New-PSSession -ConfigurationName   Microsoft.Exchange -SessionOption (New-PSSessionOption -Culture "en-Us") -ConnectionUri http* -Authentication Kerberos -Credential  $UserCredential

    19 ноября 2015 г. 9:15

Все ответы

  • Добрый день!

    Насколько я знаю, для фильтрации ContentFilter используется тот же язык, что и в программе Outlook, называется он OPATH. 

    Причина может быть в формате дат, они отличаются в системе где вы выполняете скрипт и необходимым форматом. Например требуется "01/01/2010" "Месяц/число/год".

    В общем проверьте формат. Такое однажды мне помогло.

    https://technet.microsoft.com/ru-ru/library/ff601762(v=exchg.141).aspx

    Попробуй применить такое: 

    (Get-Date).AddDays(-1).ToString('MM-dd-yyyy')


    • Изменено Nikolay_KZ 18 ноября 2015 г. 7:03
    18 ноября 2015 г. 6:54
  • Он бы ругался на формат даты. Писал бы что не может преобразовать.Если я ставлю дату в этом формате
    MM-dd-yyyy
     , то статус выгрузки = Failed.
    18 ноября 2015 г. 7:56
  • Выгружается весь ящик потому что, после экспорта, команда

    Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | select ContentFilter

    Скорее всего выдаст вам результат ((Received -ne $null) and (Received -ne $null))

    Возможно это поможет

    http://occasionalutility.blogspot.com.au/2014/03/everyday-powershell-part-17-using-new.html

    18 ноября 2015 г. 12:09
  • не помогло, выгрузка failed.

    Я как то не очень уверен, что локаль поменяется в предложенном варианте.

    Неужели никто не выгружал больше ящики, или у всех всё работает?

    18 ноября 2015 г. 13:26
  • Почему failed? В этот момент выгрузка шла?

    Сазонов Илья

    https://isazonov.wordpress.com/

    18 ноября 2015 г. 14:18
    Модератор
  • Нет, создается файлик 256кб и выгрузка фэйлится. Уже нарывался на такое в ходе своих тестов, так же изменя вид даты. В описанном выше мной варианте, только работает выгрузка, но не работают фильтры. 

    Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | select ContentFilter фильтры при этом отдаёт фильтры

    18 ноября 2015 г. 17:01
  • Потестировал вчера работу контент фильтра. Работает он в итоге только в en-us формате.

    Имеем Win 2012R2 Eng, Exchange 2013 Eng. Настройки Windows. Region->Format Russian.

    Пробую в формате dd/MM/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '01/11/2015') -and (Received -lt '17/11/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Ошибка: The provided ContentFilter value is invalid. ContentFilter is invalid. The value could not be converted to type System.DateTime.

    Пробую в формате MM/dd/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '11/01/2015') -and (Received -lt '11/17/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Запускается, но выгрузка проходит со статусом Failed создается pst в 265 Кб, в статистике в поле Messagge все та же ошибка The provided ContentFilter value is invalid. ContentFilter is invalid. The value could not be converted to type System.DateTime.

    Закрываю консоль EMS, меняю Настройки Windows. Region->Format English(United States). Если поменяете форматы с открытой консолью EMS, ничего не поменяется.

    Пробую в формате dd/MM/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '01/11/2015') -and (Received -lt '17/11/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Ошибка: The provided ContentFilter value is invalid. ContentFilter is invalid. The value could not be converted to type System.DateTime.

    Пробую в формате MM/dd/yyyy: New-MailboxExportRequest -contentfilter "(Received -gt '11/01/2015') -and (Received -lt '11/17/2015')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Все отрабатывает, выгружает то что нужно.

    Ваш рабочий вариант скрипта в итоге выглядел так:

    $enddate=get-date -day 1 "00:00:00"
    $startdate=$enddate.AddMonths(-1)
    $enddate=$enddate.ToString('MM/dd/yyyy')
    $startdate=$startdate.ToString('MM/dd/yyyy')
    New-MailboxExportRequest -contentfilter "(Received -gt '$startdate') -and (Received -lt '$enddate')" -Mailbox test -FilePath \\exchange\pst\test.pst

    Немного поменял синтаксис, т.к. в вашем варианте

    Get-MailboxExportRequest | Get-MailboxExportRequestStatistics | select ContentFilter

    выдавал ((Received -ne $null) and (Received -ne $null)).

    • Предложено в качестве ответа ILYA [ sie ] SazonovModerator 19 ноября 2015 г. 7:54
    • Помечено в качестве ответа Daniil Sedov 19 ноября 2015 г. 8:36
    19 ноября 2015 г. 7:28
  • Илья Спасибо.

    Сам пришел к ним же, к региональным настройкам.

    Вопрос только теперь как заставить powershell менять региональные настройки в рамках сессии, гуглопоиск пока не дал результатов.

    19 ноября 2015 г. 8:38
  • Победил и этот вопрос. Меня интересовала удаленная сессия так что на примере PSSesion:

    $Session = New-PSSession -ConfigurationName   Microsoft.Exchange -SessionOption (New-PSSessionOption -Culture "en-Us") -ConnectionUri http* -Authentication Kerberos -Credential  $UserCredential

    19 ноября 2015 г. 9:15