Bagaimana cara membuka kontak Outlook menggunakan skrip baris perintah Windows?

3

Saya cenderung menyimpan banyak informasi di bidang Catatan pada kontak Outlook.

Mengakses info terperinci ini untuk kontak tertentu di Outlook 2013 memerlukan banyak langkah di desktop Windows:

  • membuka Outlook
  • beralih ke tampilan Kontak
  • mencari kontak dengan nama
  • membuka "Tampilan orang" terpadu kontak
  • membuka kartu Kontak Outlook lengkap

Sebagai pengguna yang kuat, saya ingin menggunakan beberapa skrip:

Win-R oc John Smith

dimana Win-R adalah jalan pintas untuk membuka a Run... jendela, dan oc akan menjadi beberapa jenis skrip (PowerShell, VBA, Perl,?) untuk langsung membuka kartu kontak Outlook rinci untuk nama yang diberikan.

Apakah ada cara untuk mencapai ini? Kode spesifik akan lebih bagus.

(Harap perhatikan bahwa sayangnya Outlook 2013 tidak lagi membuat kontennya dapat diakses oleh Pencarian Windows.)

Terima kasih.

Hugues
sumber

Jawaban:

2

Contoh Powershell untuk membantu Anda memulai:

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

Ini menciptakan koneksi COM ke Outlook (harus diinstal),
kemudian mencari folder Kontak (# 10),
kemudian dapatkan semua Item kontak dari folder,
kemudian Mendapat item Kontak pertama
dan akhirnya menampilkan Nama Depan dan Alamat Email utama kontak itu.

Info lebih lanjut:

Ƭᴇcʜιᴇ007
sumber
Saya kedua metode ini. Powershell adalah raja.
MDT Guy
Terima kasih untuk petunjuk yang bagus. Saya berharap dapat membuka jendela dengan Kontak Outlook (untuk memungkinkan penyalinan, pengeditan, dll). Bisakah Anda memikirkan cara untuk melakukan ini secara terprogram?
Hugues
Terima kasih untuk contohnya! Saya sedang mencari cara untuk memperbarui entri buku alamat lokal saya melalui Powershell dan ini membuat saya mulai. Ini membantu bahwa ada $contact.Save() metode juga. Terima kasih!
qJake
0

Windows Desktop Search 4.0:

Windows Desctop Search 4.0

Baris perintah, jika perlu:

WindowsSearch /url search-ms:query=(jaiPhone)kind:contacts

Pelajari Cara Menggunakan Operator Pencarian Lanjutan Windows 7

Menguasai Pencarian Windows menggunakan Advanced Query Syntax

Sintaks Kueri Tingkat Lanjut

7 Trik Pencarian Windows Teratas yang Digunakan oleh Pengguna Pro

Pencarian Windows dengan Windows 7 dan Outlook 2007

STTR
sumber
Terima kasih atas sarannya - Saya menggunakan sesuatu seperti ini sebelumnya dengan Outlook 2010. Namun, Outlook 2013 tidak mendaftarkan kontennya di indeks Pencarian Windows. Lihat google.com/search?q=outlook+2013+windows+search .
Hugues
0

Setelah banyak percobaan, saya menemukan solusi menggunakan skrip Perl berikut:

#!/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;
Hugues
sumber