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.

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:


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

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;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.