2017-04-21 66 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

非常感谢您的回答。我没有意识到这一点。但是'-'不是错的吗? –