批量将所有资源会议室日历同步至所有Office 365用户Outlook的方法咨询
批量将所有资源会议室日历同步至所有Office 365用户Outlook的方法咨询
嗨,太懂你这种手动操作的痛苦了——200多个用户一个个加会议室日历,简直是重复劳动天花板!既然权限已经配置好了,咱们直接用PowerShell批量搞定日历挂载的事儿就行,不用再耗时间手动操作啦。
下面是亲测有效的操作步骤和脚本:
先连接Exchange Online PowerShell
打开PowerShell(推荐用Windows PowerShell 5.1或PowerShell 7),执行命令登录管理员账号:Connect-ExchangeOnline弹出登录窗口后,输入你的Office 365管理员账号密码完成授权。
获取目标会议室和用户列表
先把所有需要挂载的会议室邮箱,以及要添加日历的用户邮箱都提取出来:# 获取所有资源会议室邮箱 $roomCalendars = Get-Mailbox -RecipientTypeDetails RoomMailbox # 获取所有普通用户邮箱(如果要过滤特定用户,可在这里加条件,比如按部门筛选) $allUsers = Get-Mailbox -RecipientTypeDetails UserMailbox批量为用户订阅会议室日历
核心用New-MailboxFolderSubscription命令,这个命令会让用户自动订阅指定日历,打开Outlook后就能直接看到,不用手动添加「来自会议室列表」的日历。完整循环脚本如下:# 遍历每个用户,为其订阅所有会议室日历 foreach ($user in $allUsers) { Write-Host "正在处理用户: $($user.DisplayName) ($($user.PrimarySmtpAddress))" foreach ($room in $roomCalendars) { try { # 订阅会议室的日历文件夹 New-MailboxFolderSubscription -Mailbox $room.PrimarySmtpAddress -Folder "\Calendar" -Subscriber $user.PrimarySmtpAddress -ErrorAction Stop Write-Host "✅ 成功添加会议室: $($room.DisplayName) 到用户 $($user.DisplayName)" } catch { # 处理已订阅或其他异常情况 Write-Warning "⚠️ 用户 $($user.DisplayName) 操作会议室 $($room.DisplayName) 时出错: $_" } } } Write-Host "🎉 所有批量订阅操作完成!"
额外提示:
- 执行脚本需要Exchange Online管理员权限,确保你的账号权限足够。
- 用户量较大时,脚本运行可能需要几分钟,别中途中断。
- 如果要排除特定用户/会议室,可在获取列表时加过滤条件,比如排除某个用户:
$allUsers = Get-Mailbox -RecipientTypeDetails UserMailbox | Where-Object {$_.PrimarySmtpAddress -ne "不需要的用户@你的域名.com"} - 用户打开Outlook后,可能需要等待几分钟同步,会议室日历才会显示在「其他日历」或「共享日历」分组里。
备注:内容来源于stack exchange,提问作者user23458504
相关产品推荐
相关产品推荐

