当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何报告会议室邮箱的会议统计信息

作者:精品下载站 日期:2024-12-14 04:07:59 浏览:13 分类:玩电脑

如何报告会议室邮箱的会议统计信息


了解会议室的用途

随着在线会议成为常态,组织可能想知道会议室的使用率有多少。您可以通过持续检查房间来监控使用情况,了解房间是否被占用、被谁占用以及占用时间。监控房间的进出情况并不是一项有吸引力或有趣的任务,但可以通过使用 Graph API 请求针对房间邮箱的日历来自动检查房间邮箱的日历,以查找有关房间邮箱安排的事件的信息,如图所示1. 这些数据不包括人们在没有正式预订的情况下出现并使用房间的非正式会议,但它应该能够很好地监督会议室的繁忙程度。

在本文中,我描述了我编写的脚本,该脚本用于从房间日历中提取会议信息以报告一些使用情况统计信息。所说明的原理是如何访问和使用信息。之后,由您决定如何使用这些数据。

[玩转系统] 如何报告会议室邮箱的会议统计信息

更新:本文介绍了如何增强脚本以添加日常使用模式图表。

脚本先决条件

我经常使用 Microsoft Graph PowerShell SDK cmdlet 与 Graph 进行交互。但是,在本例中,我在脚本中使用注册的 Azure AD 应用程序来保存访问所需的 Graph Calendar.Read.AllPlace.Read.All 应用程序权限日历。

尽管这样的脚本可能会作为计划任务运行,但我希望能够以交互方式运行该脚本,并且使用 Microsoft Graph PowerShell SDK 的交互访问仅限于委托访问。换句话说,代码可以报告登录用户日历中的项目,但无权访问属于会议室的日历。需要应用程序权限才能访问其他用户邮箱中的文件夹。同样的问题促使我们在邮箱报告脚本中选择 Graph API 请求。

Graph SDK cmdlet 在非交互式脚本中运行时可以使用应用程序权限。例如,在 Azure 自动化 Runbook 中使用 SDK cmdlet 时,将使用自动化帐户进行身份验证。自动化帐户的服务主体拥有脚本访问数据所需的权限。有关图形权限的更多信息,请参阅本文。

Exchange Online 应用程序访问策略可以通过限制对特定邮箱的访问来控制访问邮箱内容的应用程序。在这种情况下,应用程序访问可以定义该应用程序只能访问房间邮箱。

Active Directory 的网络安全风险管理

了解如何通过这些网络安全风险管理解决方案预防 AD 攻击并从中恢复。

列出房间邮箱和工作区

在 Azure AD 管理中心创建注册应用程序、分配两个应用程序权限并同意使用它们后,是时候开始查找要处理的房间邮箱列表了。为此,该脚本使用 Graph Places API 并运行以下查询:

$Uri = "https://graph.microsoft.com/beta/places/microsoft.graph.room"

该查询返回用于主持会议的类型的完整房间邮箱,但不包括工作区。这些是人们可以预订的较小地点(例如轮用办公桌)。在 Exchange 术语中,这些对象是标记为工作区的房间邮箱。 Places API 以不同的方式对待工作区,因为它们在 Outlook 的 Room Finder 中显示为单独的对象。要检索工作区,API 请求为:

$Uri = "https://graph.microsoft.com/beta/places/microsoft.graph.workspace"

为了创建房间邮箱和工作区的列表,我们组合了两个 API 请求返回的数据集。获取房间邮箱和工作区的另一种方法是使用 Get-EXOMailbox cmdlet:

[array]$RoomMailboxes = Get-EXOMailbox -RecipientTypeDetails RoomMailbox

使用 Get-EXOMailbox 的缺点是脚本必须连接到 Exchange Online 管理模块。此外,下面用于获取日历数据的查询已更改,因此必须使用 primarySMTPaddress 属性,而不是使用 emailAddress 属性。

提取日历数据

现在,我们需要循环访问这组邮箱以从每个日历中提取会议信息。查询的 URI 是:

$Uri = "https://graph.microsoft.com/V1.0/users/" + $Room.emailAddress + "/calendar/calendarView?startDateTime=" + $Start + "&endDateTime=" + $End

日历的标识符是邮箱的主 SMTP 地址。 CalendarView 参数设置要检索的信息的开始日期和结束日期。这些变量是在脚本的前面设置的,用于查找过去 60 天内的事件(很容易更改)。生成的 URI 如下所示:

https://graph.microsoft.com/V1.0/users/[email protected]/calendar/calendarView?startDateTime=2022-09-28T18:48:02&endDateTime=2022-11-28T18:48:02

调用的结果填充事件数组。该脚本对每个事件进行解包以获取我们想要分析的信息,例如组织者、持续时间、在线会议状态、与会者人数等。

提取后,事件如下所示:

Room              : Board Conference Room
Mail              : [email protected]
Type              : singleInstance
Organizer         : Ken Bowers
OrganizerEmail    : [email protected]
Created           : 23/10/2022 17:39
Modified          : 23/10/2022 18:00
TimeZone          : Pacific Standard Time
Subject           : Ken Bowers
AllDay            : False
Online            : False
OnlineProvider    : unknown
Start             : 24/10/2022 15:00
End               : 24/10/2022 15:25
Duration          : 25
Location          : Board Conference Room
RequiredAttendees : Ken Bowers, James Ryan, Sean Landy
OptionalAttendees :
TotalAttendees    : 3
Required          : 3
Optional          : 0
TotalAtEvent      : 4
EventId           : AAMkADE0M2EyZGI3LTMzMWEtNDkxNC04ZjczLWRiMDBhMWViYTJjYQBGAAAAAABic4Kwcjs0Qre76zx9826DBwCVwQhtkGArSqwD

处理完所有房间邮箱后,脚本会总结所发现的内容。一些简单的计算可以告诉我们事件的数量、在线数量、最受欢迎的房间和最活跃的会议组织者,以及每个房间的摘要快照。一些简单的格式会显示统计信息(图 2)。

[玩转系统] 如何报告会议室邮箱的会议统计信息

该数据仅包括会议室日历接受的会议。取消的会议不包括在内。

更多要做的事

显然,这个数据并不是很令人兴奋,因为它只涵盖了 28 场会议。然而,原则才是重要的,一旦您可以访问和检索数据,您就可以以任何您想要的方式处理它,包括将数据导出到 Power BI 以以不同的方式可视化它

我使用的脚本可以从 GitHub 获取。请随意以任何可能的方式改进它。

Active Directory 的网络安全风险管理

了解如何通过这些网络安全风险管理解决方案预防 AD 攻击并从中恢复。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯