如何使用 Windows 命令行脚本打开 Outlook 联系人?

如何使用 Windows 命令行脚本打开 Outlook 联系人?

我倾向于在 Outlook 联系人的 Notes 字段中存储大量信息。

在 Outlook 2013 中访问特定联系人的详细信息需要在 Windows 桌面上执行许多步骤:

  • 打开 Outlook
  • 切换到联系人视图
  • 按姓名搜索联系人
  • 打开联系人的统一“人员视图”
  • 打开完整的 Outlook 联系人卡片

作为高级用户,我想使用一些脚本:

Win-R oc John Smith

Win-R打开窗口的快捷方式在哪里Run...,以及oc是否会使用某种类型的脚本(PowerShell,VBA,Perl,?)来直接打开给定名称的详细 Outlook 联系人卡。

有什么办法可以实现这个吗?如果有具体的代码就更好了。

(请注意,不幸的是,Outlook 2013 不再允许 Windows Search 访问其内容。)

谢谢。

答案1

Powershell 示例可帮助您入门:

$outlook = new-object -com Outlook.Application
$contactFolder = $outlook.session.GetDefaultFolder(10)
$contacts = $contacts.Items
$firstContact = $contacts.GetFirst()
$contact.FirstName
$contact.Email1Address

它创建与 Outlook 的 COM 连接(必须安装),
然后查找联系人文件夹(#10),
然后从文件夹中获取所有联系人项目,
然后获取第一个联系人项目
,最后显示该联系人的名字和主要电子邮件地址。

更多信息:

答案2

答案3

经过多次试验后,我使用以下 Perl 脚本找到了解决方案:

#!/usr/bin/perl

use strict;
use warnings;

use Win32::OLE qw(in with);
$Win32::OLE::Warn = 2;
use Win32::OLE::Variant;  # to get Date scalar

my $olFolderContacts = 10;  # = olFolderContacts

my $outlook;
eval {
  $outlook = Win32::OLE->GetActiveObject('Outlook.Application');
};
die "$@\n" if $@;
if (!defined $outlook) {
  $outlook = Win32::OLE->new('Outlook.Application')
    or die "Oops, cannot start Outlook: ", Win32::OLE->LastError, "\n";
}

my $mapi = $outlook->GetNamespace('MAPI');  # see class NameSpace

my $searchname = "@ARGV";
my $contacts = $mapi->GetDefaultFolder($olFolderContacts); # (FolderType As OlDefaultFolders) As Folder
#  also olFolderCalendar, olFolderDeletedItems, olFolderDrafts, olFolderInbox, olFolderSuggestedContacts, ...
my @found;
for my $contact (in $contacts->{Items}) {
  my $name = $contact->{"FullName"};
  if ($name =~ /\b${searchname}\b/i) { push(@found, $contact); }
}
if (!@found) { die "Contact '$searchname' not found\n"; }
if (@found>1) {
  warn "Found multiple contacts matching '$searchname':\n";
  for (@found) { my $name = $_->{"FullName"}; warn "$name\n"; }
  exit 1;
}
my $contact = $found[0];
my $name = $contact->{"FullName"};
warn "Found '$name'\n";
$contact->Display;

相关内容