2017-04-21 68 views
-1

- 所以我下面的腳本,從我的Outlook收件箱中檢索12日的電子郵件(我知道foreach是不太必要的時刻):在PowerShell中使用Outlook API來計算郵件傳遞時間

Add-Type -assembly "Microsoft.Office.Interop.Outlook" 
$Outlook = New-Object -comobject Outlook.Application -ErrorAction SilentlyContinue 
$namespace = $Outlook.GetNameSpace("MAPI") 


    foreach($mail in $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox).Items(12)) 
    { 
    Write-Host "Mail subject: " $mail.TaskSubject 
    Write-Host "Sent on: " $mail.SentOn 
    Write-Host "Received on: "$mail.ReceivedTime 
    $time = $mail.ReceivedTime -= $mail.SentOn 
    } 

輸出:

郵件主題:買鞋

發送於:2017年4月5日二十時10分15秒

收件日期:2017年4月5日20時10分25秒

我能夠檢索發送和接收時間,但我無法它們。減去對方看多久採取了電子郵件的方式。

我試圖輸出$time變量,但它是空的,它不顯示任何錯誤。我會如何糾正這一點?

- 是否有可能獲得使用該API的電子郵件標題?我試圖避開它,但我認爲這是不可能沒有其他庫(因爲屬性EmailHeader不存在

? - 我需要一個電子郵件「專家」爲我的下一個問題當我檢查電子郵件的標題時,我注意到SentOnReceivedTime無法在電子郵件標題中找到,有時候我可以找到幾秒鐘或更少的時間,其他場合我發現0比較結果。

這是爲什麼?

+1

是' - ='一個錯字嗎?在該位置使用它似乎不是一個有效的運營商。 –

+0

是的,這是非常感謝你注意到 –

+0

你對我的主要問題馬克其他單獨的問題有任何想法嗎?只是想知道 –

回答

1

你需要使用TimeSpan功能....在這種情況下,我不太確定目前還在玩。也許你會更快得到它!功能的例子

$Starttime=(GET-DATE) 

$Endtime=[datetime]」04/21/2017 00:00」 

NEW-TIMESPAN –Start $Starttime –End $Endtime 

返回

Days    : 0 
Hours    : -11 
Minutes   : 0 
Seconds   : -1 
Milliseconds  : -987 
Ticks    : -396019872099 
TotalDays   : -0.458356333447917 
TotalHours  : -11.00055200275 
TotalMinutes  : -660.033120165 
TotalSeconds  : -39601.9872099 
TotalMilliseconds : -39601987.2099 
+0

非常感謝您的回答。我沒有意識到這一點。但是'-'不是錯的嗎? –