2015-04-17 47 views
2

提取Outlook中的郵件是否有辦法來獲取所有發送&列表接收到具有後綴通過的PowerShell或VBScript不等於@gmail.com,並可能將其存儲在單獨的文本文件的電子郵件。的PowerShell/VBScript中 - 根據病情

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") 
$folder = $namespace.getDefaultFolder($olFolders::olFolderSentMail) 
$folder.items | Select-Object -Property Subject, SentOn, To 

我正在使用上面的PS獲取發送的郵件,但不知道在哪裏應用條件。 其次,主題沒有完全出現,它變成.....有沒有什麼方法可以獲得完整的主題?

+0

如果您要導出數據,則整個主題將在那裏。它只是試圖將數據放在控制檯上的powershell。配置到'Format-Table -auto'可以幫助控制檯輸出。至於發件人我的項目不包含地址,但我的聯繫人的友好名稱,所以我無法過濾這些數據。 – Matt

回答

1

我假設你在客戶端計算機上運行而不是服務器。如果您已經訪問Exchange服務器,那麼可以使用易於使用的PowerShell命令行(New-MailboxExport)。

$文件夾是一個COM對象 $ folder.items屬性包含表示消息的COM對象的集合。

由於它們是對象,因此可以使用對象命令(Get-Help Object)來使用它們的屬性。你只需要多挖一點來應用你的過濾器。具體來說,還有一個級別是$ folder.items中的項目的屬性。將$ $ folder.items傳遞給Get-Member以獲取完整的屬性列表。 $folder.items | gm。到,從,SentOn和主題都在那裏。

$NonGmailMessages = $folder.items | 
where-object { { $_.to -notcontains "gmail.com" } -and 
{ $_.from -notcontains "gmail.com" } } 

處理這樣的集合的一種方法就是像我剛纔那樣做一個大規模的過濾器。或者你可以分階段過濾。

$NonGmailMessages = $folder.items 
$NonGmailMessages = $NonGmailMessages | where-object { { $_.to -notcontains "gmail.com" } 
$NonGmailMessages = $NonGmailMessages | where-object { { $_.from -notcontains "gmail.com" } 

添加更多行以進一步縮小您的收藏範圍。

您可以導出此集合完成所有性質不變的CSV:

$NonGmailMessages | Export-CSV -NoTypeInformation c:\temp\nonGmailMessages.csv 

或者您也可以縮小屬性的數量出口

$NonGmailMessages | Select-Object -Property From, To, SentOn, Subject | Export-CSV -NoTypeInformation c:\temp\nonGmailMessages.csv 

-NoTypeInformation防止被列出的對象類型信息在文件的開頭。這將使它成爲更純粹的CSV,用於PS或Excel或其他任何應用程序。加上CSV是一種基於文本的文件格式,如你所願。

+0

謝謝,這基本上是我想要的。但是,面對過濾問題,「To」和「From」中沒有任何域是實際的對象。 「To」只包含名稱。 例如: 郵件發送到'abc.xyz @ mno.com','到'顯示爲'xyz,abc'不是域。 有沒有辦法檢查所有的Outlook文件夾?收件箱,SentItems,草稿,發件箱等 – Lastwish

+0

@Lastwish,我不熟悉你使用過的com對象,所以我不知道如何瀏覽Outlook文件夾或在它們中做任何類型的遞歸。在Powershell中,有時可以從一個對象中拖出更多的屬性,而不是默認拖動的屬性。我會將一個項目傳遞給'Get-Member'命令來探索可用的屬性。 – Xalorous