使用PowerShell+EWS Managed API创建Exchange重复会议遇阻求助
PowerShell结合EWS Managed API创建重复会议解决方案
错误原因说明
Microsoft.Exchange.WebServices.Data.Recurrence是抽象基类,无法直接通过New-Object实例化,必须使用其具体子类(如WeeklyPattern、RelativeMonthlyPattern等)。- 调用
WeeklyPattern构造函数时,需传入完整参数(开始日期、重复周几、间隔周数),参数缺失会导致匹配失败。
前置准备
确保已正确加载EWS Managed API DLL并初始化Exchange服务:
# 加载EWS DLL Add-Type -Path "C:\路径\到\Microsoft.Exchange.WebServices.dll" # 初始化Exchange服务 $exchangeService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2016) $exchangeService.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials("邮箱账号", "密码") $exchangeService.Url = New-Object Uri("https://outlook.office365.com/EWS/Exchange.asmx") # 根据Exchange环境调整URL
各类型重复会议代码示例
每周重复会议
# 创建基础预约对象 $weeklyAppt = New-Object Microsoft.Exchange.WebServices.Data.Appointment($exchangeService) $weeklyAppt.Subject = "每周团队例会" $weeklyAppt.Body = "每周三下午14点的同步会议" $weeklyAppt.Start = [DateTime]"2024-05-22 14:00:00" $weeklyAppt.End = $weeklyAppt.Start.AddHours(1) $weeklyAppt.Location = "一号会议室" # 设置每周重复规则:每周三、每1周重复一次,持续到2024年底 $weeklyRecurrence = New-Object Microsoft.Exchange.WebServices.Data.Recurrence.WeeklyPattern( $weeklyAppt.Start.Date, [Microsoft.Exchange.WebServices.Data.DayOfTheWeek]::Wednesday, 1 ) $weeklyRecurrence.EndDate = [DateTime]"2024-12-31" $weeklyAppt.Recurrence = $weeklyRecurrence # 保存并发送邀请 $weeklyAppt.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy)
每月重复会议(每月第2个周二)
$monthlyAppt = New-Object Microsoft.Exchange.WebServices.Data.Appointment($exchangeService) $monthlyAppt.Subject = "月度工作汇报" $monthlyAppt.Body = "每月第二个周二的进度汇报" $monthlyAppt.Start = [DateTime]"2024-05-14 10:00:00" $monthlyAppt.End = $monthlyAppt.Start.AddHours(2) $monthlyAppt.Location = "二号会议室" # 设置每月重复规则:每月第2个周二、每1个月重复一次,共10次 $monthlyRecurrence = New-Object Microsoft.Exchange.WebServices.Data.Recurrence.RelativeMonthlyPattern( $monthlyAppt.Start.Date, 2, [Microsoft.Exchange.WebServices.Data.DayOfTheWeek]::Tuesday, 1 ) $monthlyRecurrence.NumberOfOccurrences = 10 $monthlyAppt.Recurrence = $monthlyRecurrence $monthlyAppt.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy)
每年重复会议(每年5月20日)
$yearlyAppt = New-Object Microsoft.Exchange.WebServices.Data.Appointment($exchangeService) $yearlyAppt.Subject = "年度客户答谢会" $yearlyAppt.Body = "每年5月20日的客户答谢活动" $yearlyAppt.Start = [DateTime]"2024-05-20 15:00:00" $yearlyAppt.End = $yearlyAppt.Start.AddHours(3) $yearlyAppt.Location = "宴会厅" # 设置每年重复规则:每年5月20日、每1年重复一次,永久生效 $yearlyRecurrence = New-Object Microsoft.Exchange.WebServices.Data.Recurrence.AbsoluteYearlyPattern( $yearlyAppt.Start.Date, 5, 20 ) $yearlyRecurrence.NeverEnds = $true $yearlyAppt.Recurrence = $yearlyRecurrence $yearlyAppt.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy)
内容的提问来源于stack exchange,提问作者siddique ur rehman
相关产品推荐
相关产品推荐

