Como abrir um contato do Outlook usando um script de linha de comando do Windows?

3

Eu tenho a tendência de armazenar muitas informações nos campos do Notes dos contatos do Outlook.

O acesso a essas informações detalhadas para um contato específico no Outlook 2013 requer muitas etapas na área de trabalho do Windows:

  • abrindo o Outlook
  • mudando para a visualização de contatos
  • procurando o contato pelo nome
  • abrindo a "Visualização de pessoas" unificada do contato
  • abrindo o cartão completo de contato do Outlook

Como usuário avançado, gostaria de usar algum script:

Win-R oc John Smith

em que Win-R é o atalho para abrir uma janela Run... , e oc seria algum tipo de script (PowerShell, VBA, Perl,?) para abrir diretamente o cartão de contato detalhado do Outlook para o nome fornecido.

Haveria alguma maneira de conseguir isso? Código específico seria ótimo.

(Observe que, infelizmente, o Outlook 2013 não torna mais seu conteúdo acessível para o Windows Search.)

Obrigado.

    
por Hugues 28.05.2013 / 16:42

3 respostas

2

Exemplo do Powershell para você começar:

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

Cria uma conexão COM para o Outlook (deve ser instalado),
em seguida, procura a pasta Contatos (# 10),
em seguida, obtém todos os itens de contato da pasta,
Em seguida, obtém o primeiro item de contato e finalmente exibe o nome e o endereço de email principal desse contato.

Mais informações:

por 28.05.2013 / 19:24
0

Windows Desktop Search 4.0:

Linhadecomando,senecessário:

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

Aprenda a usar os operadores de pesquisa avançada do Windows 7

Dominando a Pesquisa do Windows usando a sintaxe de consulta avançada

Sintaxe de consulta avançada

Os 7 principais truques de pesquisa do Windows usados por usuários profissionais

Pesquisa do Windows com o Windows 7 e o Outlook 2007

    
por 28.05.2013 / 20:59
0

Depois de muita experimentação, encontrei uma solução usando o seguinte script 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;
    
por 17.10.2015 / 17:26