【问题标题】:Is there a way get past 30 min of document from lotus notes database using powershell?有没有办法使用 powershell 从 lotus notes 数据库中获取超过 30 分钟的文档?
【发布时间】: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 是可编程的,并且您可以在其中开发用于许多不同目的的代理。您可能还可以使用其他标准功能,例如邮件日记。你的项目到底是什么,你想集成什么?

标签: powershell lotus-notes


【解决方案1】:

找到了一种使用 notes 命令从 Lotus notes 数据库中获取电子邮件的方法。下面的脚本将收到过去 15 分钟内收到的电子邮件。

$DomSession = New-Object -ComObject Lotus.NotesSession
$DomSession.Initialize()
$DomDatabase = $DomSession.GetDatabase("DominoSERVER", "MAIL.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
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 ($check.LastModified -gt ((get-date).AddMinutes(-15)))

现在我必须确保脚本每 15 分钟运行一次,以获取过去 15 分钟内提出的所有电子邮件。我仍然希望标记上面脚本已经选择的电子邮件,如果我能破解我也会分享解决方案,或者如果有人已经这样做了,请分享或改进脚本。

祝大家编码愉快!!!

【讨论】:

  • 您使用的是哪个版本的 Lotus Notes 邮箱模板?我不认为在过去 15 年的任何版本中都使用过“按类别分类”视图。如果我没记错的话,如果你使用那个视图,你会发现实际上不是电子邮件的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多