PowerShell脚本添加Outlook互联网日历时WebCalUrl设置异常求助
解决Outlook PowerShell脚本设置WebCalUrl报错问题
我需要为约120位用户在Outlook中添加约30个互联网日历,编写了如下PowerShell脚本:
$outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.GetNameSpace("MAPI") $profile = $namespace.Folders.Item(1) $calendars = $profile.Folders | Where-Object { $_.Name -eq "Calendar" } $internetCalendars = $profile.Folders | Where-Object { $_.Name -eq "Internet Calendars" } if ($internetCalendars -eq $null) { $internetCalendars = $profile.Folders.Add("Internet Calendars") } $calendarName = "test calendar" $calendarLink = "https://outlook.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/calendar.ics" $internetCalendar = $internetCalendars.Folders.Add($calendarName) $internetCalendar.WebCalUrl = $calendarLink $internetCalendar.SendAndReceive
执行时出现如下错误:
At line:20 char:1 + $internetCalendar.WebCalUrl = $calendarLink + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException + FullyQualifiedErrorId : ExceptionWhenSetting
错误原因
直接通过Folders.Add()创建的普通文件夹,其WebCalUrl属性是只读的。只有通过Outlook官方API创建的互联网日历订阅文件夹,该属性才支持赋值操作。原脚本的创建方式不符合Outlook COM对象模型的规则。
修正方案
使用Outlook对象模型提供的AddInternetCalendarSubscription方法来添加互联网日历,该方法会自动创建符合要求的订阅文件夹,并正确关联ICS链接。
修正后的脚本
$outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.GetNameSpace("MAPI") $calendarName = "test calendar" $calendarLink = "https://outlook.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/calendar.ics" # 添加互联网日历订阅 $subscription = $namespace.AddInternetCalendarSubscription($calendarLink) # 获取订阅对应的日历文件夹并重命名 $calendarFolder = $namespace.GetFolderFromID($subscription.CalendarFolderID) $calendarFolder.Name = $calendarName # 触发同步操作 $namespace.SendAndReceive($true)
批量操作注意事项
如果要给120位用户批量添加,建议结合Exchange Online PowerShell(适用于云环境用户),使用Add-MailboxCalendarSubscription cmdlet,无需在每台本地机器运行Outlook脚本:
# 示例:为单个用户添加日历订阅 Add-MailboxCalendarSubscription -Identity "user@domain.com" -CalendarUrl "https://outlook.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/calendar.ics" -Name "test calendar"
内容的提问来源于stack exchange,提问作者Bogdan Moise
相关产品推荐
相关产品推荐

