2014-02-21 3 views
2

Я создал очень простой сценарий powershell, чтобы собрать основную информацию обо всех электронных письмах в папке общего почтового ящика.Список всех писем в общем почтовом ящике с именем вложений

Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null 
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] 
$outlook = new-object -comobject outlook.application 
$namespace = $outlook.GetNameSpace("MAPI") 
$Inbox = $namespace.pickfolder() 
$Inbox.items | Select-Object -Property Categories, Attachments, Subject, ReceivedTime 

Это работает, как ожидалось, печать таблицы, которая может быть экспортирована в формате CSV, но Attachments свойства просто напечатать System.__ComObject. Таким образом, мне нужно заменить столбец «Вложения» со списком имен вложений ($_.Attachments::DisplayName)

Я пытался перебирать результаты, чтобы это исправить, что-то вроде:

$Inbox.items | Select-Object -Property Categories, Attachments, 
Subject, ReceivedTime | ForEach-Object -Process {$_.Attachments::DisplayName} 

Но только эта печать информацию о вложении, а не остальные данные. Кроме того, добавление всех полей между {} вызывает powershell для печати одного поля на строку, поэтому его нельзя экспортировать как CSV.

Не могли бы вы помочь мне правильно заменить столбец «Вложения»?

ответ

3

Изменение последней строки:

$Inbox.items |Select-Object -Property Categories,Subject, 
ReceivedTime,@{name="Attachments";expression={$_.Attachments|%{$_.DisplayName}}} 

вы можете затем передать его в | ft -wrap «расширить» столбец Вложения.

+0

Спасибо, это то, что я искал! – lithiium

Смежные вопросы