Разобрать тело файла msg (email)

Мне нужно проанализировать тело писем, чтобы получить содержимое таблицы из каждого письма. Я хотел бы использовать PowerShell для этого. Я пробовал этот код:

Get-ChildItem "C:\Users\mmartindale.NTSERVER\Desktop\delreg temp\msg" -Filter *.msg |
    ForEach-Object {
        $outlook = New-Object -comobject outlook.application
        $msg = $outlook.Session.OpenSharedItem($_.FullName)
        $msg | Select body | ft -AutoSize
    }

Но все, что я получаю, это сокращенный вывод, подобный этому:

Body
----
This is approved for Deal Reg...

Как мне вывести это как объект, который я могу пройти через цикл?


person user2642759    schedule 20.06.2016    source источник
comment
Привет, попробуй заменить $msg | Select body|ft -AutoSize на $msg | Select -expand body ?   -  person sodawillow    schedule 21.06.2016


Ответы (1)


Вы можете использовать параметр -ExpandProperty Select-Object для расширения нужного свойства.

As in:

$msg | Select-Object -ExpandProperty Body
person sodawillow    schedule 21.06.2016
comment
Мне действительно интересно узнать, знаете ли вы способ закрыть $msg после того, как он был открыт. Скрипт разбирает тело письма 1 раз, но после этого жалуется, что сообщение уже открыто. - person Brandon; 02.05.2017
comment
@ Брэндон, я проведу тест. Почему вам нужно разбирать его несколько раз? У меня была такая проблема с клиентом, и я думаю, что это связано с некоторыми настройками безопасности в Outlook (центр управления безопасностью). - person sodawillow; 02.05.2017
comment
@ Брэндон, пожалуйста, откройте новый вопрос с кодом, который вы используете, я не знаю, что вы имеете в виду под двойным разбором, и это не следует рассматривать в комментариях :). - person sodawillow; 02.05.2017