使用 Powershell 查找 Lotus Notes 互联网电子邮件地址

Posted

技术标签:

【中文标题】使用 Powershell 查找 Lotus Notes 互联网电子邮件地址【英文标题】:Using Powershell to find Lotus Notes internet email address 【发布时间】:2013-03-04 18:52:39 【问题描述】:

使用 Powershell,我需要从 Lotus Notes names.nsf 通讯簿中检索 Internet 电子邮件地址。

在 Notes 中,我可以看到要检索的 Internet 电子邮件地址。它位于“邮件”部分下的“基本”选项卡上,位于名为“Internet 地址”的字段中。但是,我无法找到它所在的视图,也找不到查询或派生它的方法。在 Lotus Notes 的“工作/家庭”选项卡上过滤我希望公司找到的电子邮件地址也会很有帮助。

在 IE 中打开其中一个 names.nsf 文件,我看到了许多我想要的字段,但其中没有格式化的 Internet 电子邮件地址。我看到的只是 Lotus notes 样式的电子邮件地址:

名姓/mycompany/abc@abc

(其中的列名为$16)。

有没有办法从 Lotus Notes names.nsf 地址簿中提取完整的 Internet 电子邮件地址?如果是这样,怎么做?如果它们在某些可用的“隐藏”视图中,您如何查询这些隐藏视图中的值?

谢谢!

【问题讨论】:

这里有一些提示:***.com/a/10648847/520612 【参考方案1】:

在许多情况下,用于查找个人文档的最佳视图是名为“$Users”的隐藏视图。它由您能想到的几乎所有名称变体索引,因此查找往往会起作用。您可以通过从视图中打开 Person 文档并读取名为“InternetAddress”的 NotesItem 来找到它,或者您可以直接从标有“InternetAddress”的视图列中读取它,我相信它是第 17 列。

【讨论】:

如何查询/列出 ($Users) 隐藏视图?当我列出可用视图时,我可以看到 ($Users),但似乎无法访问其中的任何项目。 Notes 类的最佳文档位于 Domino Designer 帮助文件中。我建议您安装它并使用它作为参考,即使您没有将它用于实际开发。由于您没有展示任何代码,而且我不知道 PowerShell 或任何关于您如何尝试编写此代码的信息,所以我能做的最好的事情就是向您展示可以在 LotusScript 中完成的方法之一。设置 myView =Database.getView("$Users"); set myEntry = myView.GetEntryByKey("用户名在这里",true); myInternetAddress = myEntry.columnValues(18)。 (我不是 100% 确定这个值 18。) 我发现我做错了——我选择了第一个文档,而没有抓住它后面的任何东西。它每次都返回相同的空文档。不过,我确实有一个后续问题-我正在执行 $doc = $view.getfirstdocument() 然后一段时间 $doc -ne $null 遍历并获取有意义的数据- $internetAddress = [string] $doc.GetItemValue("InternetAddress ") 并写出来。但是,我发现 $Users 视图中有重复项。我怎样才能做到这一点,但只获取不同的值(没有>1次通过)? 我假设您只是想找到一个用户,因为您的问题的措辞是“检索互联网电子邮件地址”,而 $Users 是正确的观点。但是,如果我知道您想要做的是遍历所有用户的电子邮件地址,那么我不会推荐 $Users - 因为所有重复的视图条目。对困惑感到抱歉。对于您真正想要的内容以及编码方式,您应该使用“人员”视图而不是 $Users。【参考方案2】:

您可以使用 powershell 从 NAB 访问给定用户的所有属性。如果您的 Notes 客户端是 32 位,则必须运行 32 位版本的 PS。系统将提示您输入 Notes ID 密码。

  $notes=new-object -comobject Lotus.NotesSession;
  $notes.Initialize("");
  $ndb = $notes.getdatabase("admin","names.nsf");
  $nview = $ndb.getview('($Users)');
  $searchkey = "Schmoe"; #whatever
  $doc =$nview.getdocumentbykey($searchkey,$true);
  $mailaddress = $doc.getitemvalue('mailaddress')[0];
  $internetaddress = $doc.getitemvalue('internetaddress')[0];

【讨论】:

以上是关于使用 Powershell 查找 Lotus Notes 互联网电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

Powershell & Lotus Notes - 将 While 循环的输出从文本更改为 XML 输出

搜索给定范围之间的日期 - Lotus

Lotus Notes闪退如何修复

powershell 如何查找需要使用的命令

powershell 如何查找需要使用的命令

powershell 使用PowerShell在Maven Central上查找Jars