I am trying to change the Joinonlinemeetingurl property using EWS, however I am getting an error "Joineonlinemeetingurl is a read only property". Is there anyway to update this URL. Also, the same behavior is noticed when I am trying to add required attendees, any help is appreciated.
Import-Module 'C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll' $exchservice = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList ([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_Sp1) $exchService.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials($cred.username,$cred.GetNetworkCredential().password); if ($EWSUrl -eq $null){ $exchService.AutodiscoverUrl($emailAddress,{$true}) $global:EWSUrl = $exchservice.url } else { $exchservice.url = $EWSUrl } $exchService.ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress,$emailAddress); $FolderID = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar,$MailboxSMTP) $Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchservice,$FolderID) $ItemPropertySet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::IDOnly) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Start) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::End) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Duration) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Organizer) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::RequiredAttendees) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Subject) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::IsAllDayEvent) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::IsRecurring) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Body) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::TextBody) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::DisplayTo) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::DisplayCc) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Location) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::FirstOccurrence) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::LastOccurrence) $ItemPropertySet.add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::JoinOnlineMeetingUrl) $itemview = New-Object Microsoft.Exchange.WebServices.Data.ItemView(10000) $Date = Get-Date 03/08/2016 $SearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsGreaterThan([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Start,$Date ) $CalendarItems = $exchservice.FindItems($Calendar.Id,$SearchFilter,$itemview) [array]$userorganizedlyncmeetings = $CalendarItems | where { ($_.JoinOnlineMeetingUrl -match "xyz.test")} foreach ( $meeting in $userorganizedlyncmeetings){ $ItemID = [Microsoft.Exchange.WebServices.Data.Appointment]::Bind($exchservice,$meeting.Id) $ItemID.subject $ItemID.Start $ItemID.End $ItemID.OptionalAttendees $ItemID.Organizer.Address $ItemID.JoinOnlinemeetingURL = $ItemID.JoinOnlineMeetingURL.Replace("xyz","abc") $ItemID.Body.Text = $ItemID.Body.Text -replace ("xyz", "abc") $ItemID.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite) }