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()