【发布时间】:2019-08-16 12:27:31
【问题描述】:
我正在做一个集成,我必须每隔 2 分钟提取一次 Lotus 电子邮件文档。我创建了一个 PowerShell 脚本来连接到本地笔记客户端。我成功阅读了最新的文档,但我无法设置时间过滤器来从笔记数据库中获取最后 5 分钟的电子邮件。我还尝试获取我用来连接到 lotus notes 数据库的 lotus notes ID 尚未读取的文档。
这是一个新的集成,用于检索过去 5 分钟的文档或 Powershell 脚本中使用的当前 lotus notes ID 未读取的文档。我只能获得最新的文档,但是当我应用时间过滤器时,它给出的值与我在 lotus notes 中检查时的实际值不匹配。
$DomSession = New-Object -ComObject Lotus.NotesSession
$DomSession.Initialize()
$DomDatabase = $DomSession.GetDatabase("DominoServer","email.nsf")
Write-Host "Database open : " $DomDatabase.Title
$DomView = $DomDatabase.GetView('All By Category')
Write-Host "View read : " $DomView.Name
$DomNumOfDocs = $DomView.AllEntries.Count
Write-Host "Num of Docs : " $DomNumOfDocs
$DomDoc = $DomView.GetFirstDocument()
$DomDoc.ColumnValues #This gives the latest email document
Do {
$checks = $DomDoc.Items
foreach ($check in $checks) {
if ($check.Name -eq 'Subject') {
[pscustomobject]@{
subject = $check.Text
creationtime = $check.LastModified
}
}
}
$DomDoc = $DomView.GetNextDocument($DomDoc)
}
while ($DomDoc.LastModified -gt ((get-date).AddMinutes(-5)))
我希望获得过去 5 分钟左右创建的电子邮件文档,但我获得了 notes 数据库中的所有文档。
【问题讨论】:
-
我不知道 Lotus ComObject,但我会尝试
$searchDate = (Get-Date).AddMinutes(-5) -
我试过了,但是没有用。我对代码进行了修改以获取最后 5 分钟的文档列表,但它给了我 30 分钟的数据。我无法理解 Lotus notes com 对象如何处理时间值。修改后的代码添加到问题中。
-
您必须使用 PowerShell 吗?我希望您知道 Notes 是可编程的,并且您可以在其中开发用于许多不同目的的代理。您可能还可以使用其他标准功能,例如邮件日记。你的项目到底是什么,你想集成什么?