Last active
January 16, 2018 02:34
-
-
Save adilio/cace5e1669d10ddcbd36c5eb858fc138 to your computer and use it in GitHub Desktop.
Get-Appointment-via-EWS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Import the EWS Managed API | |
Import-Module 'C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll' | |
# Set Exchange version, credentials, and other variables | |
$ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2 | |
$Service = [Microsoft.Exchange.WebServices.Data.ExchangeService]::new($ExchangeVersion) | |
$User = "MY-SERVICE-ACCOUNT" | |
$Password = Get-Content MySuperSecureStringPassword.txt | ConvertTo-SecureString | |
$Service.Credentials = [System.Net.NetworkCredential]::new($User, $Password) | |
$Service.Url = "https://autodiscover.MYDOMAIN.ca/EWS/Exchange.asmx" | |
$DaysAhead = 1 | |
# Specify Calendar folder to access | |
$FolderID = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, "[email protected]") | |
$Folder = [Microsoft.Exchange.WebServices.Data.calendarFolder]::Bind($Service, $FolderID) | |
# Create View for Appointment Details | |
$View = [Microsoft.Exchange.WebServices.Data.CalendarView]::new([datetime]::Now, [datetime]::Now.AddDays($DaysAhead)) | |
$View.PropertySet = [Microsoft.Exchange.WebServices.Data.PropertySet]::new([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Subject, | |
[Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Start, | |
[Microsoft.Exchange.WebServices.Data.AppointmentSchema]::End, | |
[Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Location) | |
$Folder.FindAppointments($View) | Select-Object Start , End , Subject , Location | |
# Create View2 for Appointment Body | |
$BodyPropertySet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) | |
$View2 = [Microsoft.Exchange.WebServices.Data.CalendarView]::new([datetime]::Now, [datetime]::Now.AddDays($DaysAhead)) | |
$FolderItems = $Service.FindItems($Folder.Id, $View2) | |
[Void]$Service.LoadPropertiesForItems($FolderItems, $BodyPropertySet) | |
# For each Maintenance Window, generate e-mail for ticket | |
foreach ($Item in $FolderItems.Items) { | |
$Subject = $Item.Subject | |
$Body = $Item.Body.Text | |
$SmtpServer = "MY.SMTPSERVER.ca" | |
$From = "[email protected]" | |
$To = "[email protected]" | |
$BodyFooter = | |
Send-MailMessage -SmtpServer $SmtpServer -From $From -To $To -Subject $Subject -Body $Body -BodyAsHtml | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment