PowerShell kotiček – Outlook

Tokrat bomo s PowerShellom razgrajali po Outlooku (šalo na stran: dokler niste prepričani kaj koda,ki jo boste v Outlooku poganjali, v resnici počne, uporabljajte testni račun ali pa najmanj zaganjajte kodo korak za korakom v razhroščevalskem načinu in sproti preverjajte, kaj se je res zgodilo. Koda, ki vam uide z vajeti, vam lahko povzroči precejšno zmedo, če ne že nepopravlijve škode!)

Najprej seveda pripravimo Outlook objekt in naslovni prostor:

$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNameSpace("MAPI")

Najbolj pogosti opravili sta seveda branje:

	$folder=$namespace.GetDefaultFolder(6)
	$folder.Items | 
    	?{$_.subject -match "TEST" } |
    		sort receivedtime -desc | 
    		%{
         		echo $_.body 
         		$_.Unread=$false        
     		}

in pošiljanje sporočil:

$Mail = $Outlook.CreateItem(0)
$Mail.To = »ales@kompas-xnet.si«
$Mail.Subject = »TEST«
$Mail.Body =«testno sporočilo«
$Mail.Send()

V prvem primeru smo opazili sklicevanje na DefaultFolder. Ker so vrhnje mape v Outlooku enumerirane, si jih lahko ogledamo tako:

$OutlookFolders = $Outlook.Session.Folders.Item(1).Folders
$OutlookFolders | ft FolderPath

Lahko pa nanje naredimo posamične sklice:

$OutlookDeletedITems = $Outlook.session.GetDefaultFolder(3)
$outlookOutbox = $Outlook.session.GetDefaultFolder(4)
$OutlookSentItems = $Outlook.session.GetDefaultFolder(5)
$OutlookInbox = $Outlook.session.GetDefaultFolder(6)
$OutlookCalendar = $Outlook.session.GetDefaultFolder(9)
$OutlookContacts = $Outlook.session.GetDefaultFolder(10)
$OutlookJournal = $Outlook.session.GetDefaultFolder(11)
$OutlookNotes = $Outlook.session.GetDefaultFolder(12)
$OutlookTasks = $Outlook.session.GetDefaultFolder(13)

Če ima katera od zgornjih map podmape, jih lahko dosežemo tudi poimensko:

$Outlook.Session.Folders.Item(1).Folders.Item(»Inbox«).Folders.Item(»Test«)

Sporočila v njej pa v tabelaričnem načinu pregledamo z:

$EmailsInFolder = $Outlook.Session.Folders.Item(1).Folders. Item(»Inbox«).Folders.Item(»Test«).Items
$EmailsInFolder | ft SentOn, Subject, SenderName, To, Sensitivity -AutoSize -Wrap

Dosežemo lahko tudi koledar:

$OutlookCalendar = $Outlook.session.GetDefaultFolder(9)

In iz njega preberemo dogodke:

$OutlookCalendar.Items | ft subject, start

Ali pa ustvarimo novega:

$NewEvent = $Outlook.CreateItem(1)
$NewEvent.Subject = »Članek za piko«;
$NewEvent.Start = [datetime]«/4/26/2018«;
$NewEvent.save()

Opravila (taske) preberemo z:

$OutlookTasks = $Outlook.session.GetDefaultFolder(13).Items
$OutlookTasks | ft Subject, Body

Ali pa (podobno kot pri koledarju) ustvarimo novo:

$newTaskObject =  $Outlook.CreateItem("olTaskItem")
$newTaskObject.Subject = »pika!«
$newTaskObject.Body = »nikar ne pozabi«
$newTaskObject.Save()

Nenazadnje pa nas seveda zanimajo tudi kontakti. Izpišemo si jih na naslednji način:

$OutlookContacts = $Outlook.session.GetDefaultFolder(10).items
$OutlookContacts| Format-Table FullName,MobileTelephoneNumber,Email1Address

Lahko pa dodamo tudi novega:

$OutlookContacts = $Outlook.session.GetDefaultFolder(10)
$NewContact = $OutlookContacts.Items.Add()
$NewContact | gm
$NewContact.FullName = »Janez Novak«
$NewContact.Email1Address = »janez.novak@gmail.com«
$NewContact.Save()

Dodaj odgovor

Vaš e-naslov ne bo objavljen. * označuje zahtevana polja