使用 PowerShell 将 Office 365 用户的上次登录时间导出到 CSV
很多管理员经常在社区中问:“如何使用PowerShell导出Office 365用户的上次登录时间? ”。获取 O365 用户的上次登录日期/时间是跟踪用户上次登录活动、查找非活动用户并删除其许可证的重要任务。上次登录时间显示用户上次使用 Outlook、WebMail 或移动电话访问其邮箱的时间。
使用 PowerShell 导出 Office 365 用户上次登录时间
若要查找 Office 365 中的非活动用户,您可以使用 Exchange 管理中心或 Get-MailboxStatistics PowerShell cmdlet。在这两种方式中,您都无法导出或使用它来根据非活动天数和邮箱类型过滤结果。
为了简化您的工作,我们创建了 PowerShell 脚本来导出上次登录时间以及最必需的属性,例如非活动天数、登录状态、邮箱类型、许可证详细信息、创建时间、管理角色等。
注意:您还可以使用 Get-MgUser cmdlet 检索 Office 365 用户上次的交互式和非交互式登录活动。
脚本亮点:
- 单个脚本允许您生成 10 多个不同的上次登录报告。
- 该脚本也可以使用启用 MFA 的帐户执行。
- 该脚本支持基于证书的身份验证 (CBA)。
- 允许您通过导入 CSV 获取用户列表的上次登录时间报告。
- 您可以根据非活动天数生成报告。
- 可以根据用户/所有邮箱类型过滤结果。
- 结果可以过滤到单独列出从未登录邮箱。
- 单独为启用登录的用户生成报告。
- 支持单独过滤许可用户。
- 单独获取管理员的登录时间报告
- 将结果导出到 CSV 文件。
- 分配的许可证列将显示用户友好名称,例如“Office 365 Enterprise E3”而不是“ENTERPRISEPACK”。
- 在您确认后,自动安装 Exchange Online PowerShell(用于检索上次登录时间)和 MS Graph PowerShell(用于获取许可证和管理员角色)模块。
下载脚本:LastLogonTimeReport
Office 365 上次登录报告 - 示例输出:
该脚本将 Office 365 用户的上次登录日期导出为具有以下属性的 CSV:
- 用户主体名称
- 显示名称
- 上次登录时间
- 创建时间
- 不活跃天数
- 登录状态
- 邮箱类型
- 分配的许可证(友好名称)
- 管理员角色。
脚本执行:
该脚本旨在支持启用 MFA 的帐户和非 MFA 帐户。您可以根据账户类型选择以下任意一种方式。
如何:导出“Office 365 上次登录报告”:
要导出具有 MFA 或非 MFA 帐户的 Office 365 用户的上次登录时间,请运行以下脚本。
./LastLogonTimeReport.ps1如何:导出“Office 365 上次登录报告”基于证书的身份验证:
要使用证书执行脚本,请按以下格式指定 TenantId、ClientId 和 CertificateThumbprint 参数。
./LastLogonTimeReport.ps1 -TenantId <TenantId> -ClientId <ClientId> -CertificateThumbprint <Certthumbprint>要使用基于证书的身份验证,必须在 Azure AD 中注册应用程序。要注册 Azure 应用程序并获取证书,您可以参阅使用证书连接 MS Graph 博客
释放“Office 365 上次登录时间报告”脚本的全部潜力:
以下是“导出 Office 365 上次登录时间报告”脚本的一些用例。我相信你会发现很多。请将它们留在下面的评论中以帮助其他管理员。
- 获取所有用户的上次登录日期和时间
- 导出用户列表的上次登录时间(输入 CSV)
- 根据不活跃天数获取不活跃用户报告
- 检查管理员上次登录日期
- 列出从未登录过的邮箱用户
- 获取用户邮箱的上次登录时间报告
- 查看启用登录的用户的上次登录时间报告
- 计划 Azure AD 上次登录时间报告
除了上次登录报告之外,您还可以使用登录历史记录报告来跟踪用户的登录活动。
查看所有 Microsoft 365 用户的上次登录时间:
要查看所有 Office 365 邮箱及其上次登录时间,请执行以下脚本。
.\LastLogonTimeReport.ps1
注意:我们使用基于 REST 的 cmdlet(例如 Get-ExoMailbox、Get-ExoMailboxStatistics)来提高大型组织的脚本执行速度。
通过导入 CSV 导出批量用户的上次登录时间:
要导出特定用户或用户列表的上次登录时间,您可以使用 CSV/文本文件导入它们。使用 -MBNamesFile,您可以传递输入 CSV 文件路径。例如,
.\LastLogonTimeReport.ps1 -MBNamesFile D:\MbNames.txt使用 PowerShell 导出 Office 365 非活动用户报告
要获取非活动邮箱,您可以使用 -InactiveDays 参数,该参数将返回给定时间内非活动的邮箱天。使用此参数,您可以获得超过“N”天未登录的用户列表
.\LastLogonTimeReport.ps1 -InactiveDays 50上述脚本导出过去 50 天内未登录的 Office 365 用户。
使用 PowerShell 的 Office 365 管理员登录报告:
由于导出的报告包含管理员角色,因此您可以找到 Office 365 管理员的上次登录时间。要查找不活动的管理员,请使用 -AdminsOnly 开关参数运行脚本。
.\LastLogonTimeReport.ps1 -AdminsOnly导出的报告列出了所有 Microsoft 365 管理员及其角色以及上次登录时间。
使用 PowerShell 导出从未登录的邮箱
要导出从未登录的邮箱报告,请使用 -NeverLoggedInMB 开关运行脚本。使用此报告,您可以识别空闲/未使用的邮箱并继续进行许可证协调。因此,您最终可以节省更多许可证。
.\LastLogonTimeReport.ps1 -ReturnNeverLoggedInMB将 Office 365 用户邮箱上次登录时间导出为 CSV
通常,您会遇到仅获取用户邮箱的上次登录时间并排除其他类型(例如共享邮箱、房间邮箱)的情况。在这种情况下,您可以使用 -UserMailboxOnly 参数,它将在结果中单独返回用户邮箱。
.\LastLogonTimeReport.ps1 -UserMailboxOnly上面的脚本将所有用户邮箱及其上次登录时间导出到 CSV。
获取已启用登录的用户的上次登录报告:
通常,Office 365 管理员在离开组织时会禁用用户帐户。在这种情况下,不需要检索所有 Azure AD 用户的上次登录时间。最好找到启用用户的上次登录时间。要获取不包括禁用用户的上次登录日期报告,请使用 -SignInAllowedUsersOnly 参数运行脚本。
.\LastLogonTimeReport.ps1 -SignInAllowedUsersOnly
此报告显示所有启用登录的用户的上次登录活动。
安排 Office 365 上次登录日期报告:
我们的脚本对调度程序友好。它可以通过基于证书的身份验证(也称为仅应用程序访问)来完成。要按计划任务运行脚本,您可以使用 Windows 任务计划程序。
<Script Location>\LastLogonTimeReport.ps1 -TenantId <TenantId> -ClientId <ClientId> -CertificateThumbprint <Certthumbprint>注意:根据您的需求,您可以选择使用证书颁发机构 (CA) 或创建自签名证书,这更具成本效益。
将所有 Office 365 邮箱导出为 CSV
您可以导出所有具有最有用属性的 Office 365 邮箱,例如分配的许可证、管理员角色、上次登录时间、创建时间等。要导出 Office 365 邮箱报告,请执行以下脚本
.\LastLogonTimeReport.ps1将 Office 365 中的非活动用户邮箱导出为 CSV
多个滤镜可以一起使用来获得更精细的报告。例如,您可以生成过去 50 天内不活动的用户邮箱列表。
.\LastLogonTimeReport.ps1 -InactiveDays 50 -UserMailboxOnly执行 PowerShell 脚本的初学者指南:
先决条件:
- Windows PowerShell 需要配置为运行脚本,但默认情况下不需要配置。您只需在计算机上配置此设置一次,而不是每次连接时都配置。
Set-ExecutionPolicy RemoteSigned执行“Azure AD 用户上次登录时间”脚本的步骤:
- 要运行脚本,请导航到脚本位置并执行 ./LastLogonTimeReport.ps1。该脚本可以带/不带参数执行。要使用参数运行,请参阅用例。按 Enter 键后,系统将提示您提供 Office 365 管理员凭据。
这将需要一些时间,具体取决于您环境中邮箱的数量。脚本执行后,会询问是否打开输出文件,并将其存储在当前工作目录中。
注意:
由于 LastLogonTime 属性也由某些后台任务(例如邮箱助手)更新,因此此报告(从 Get-MailboxStatistics 检索的 LastLogonTime)可能会提供不准确的数据。如果您想根据“真实”用户的上次活动获取用户的上次登录时间,可以参考将 Office 365 用户真实上次登录时间报告导出到 CSV 博客。
获取更详细的用户上次活动日期报告:
上面的报告仅列出了邮箱的上次活动时间报告,但它不会考虑其他 Office 365 服务,如 SharePoint、Teams 等。此外,您无法区分执行了哪些操作,如接收、发送或阅读邮件等。有关 Microsoft 365 用户活动的更详细报告,您可以尝试 AdminDroid Office 365 报告工具。
AdminDroid 提供40 多个报告来确定用户的不活动情况。这包括,
交换不活跃用户
- 按上次邮件发送时间
- 按上次邮件阅读时间
- 按上次收到邮件的时间
- 截至上次活动时间
- 按上次登录时间
SharePoint 非活动用户
- 按上次文件访问时间
团队非活跃用户
- 按上次发送的团队聊天消息
OneDrive 非活跃用户
- 按上次文件访问时间
Yammer 非活动用户
- 截至上次收到喜欢
非活跃用户概览报告
- 每个 O365 服务的非活跃用户报告
AdminDroid 提供非活动用户报告板,使您能够在一个集中位置监控所有 Microsoft 365 服务中的用户非活动情况。与导航到不同位置检查单个报告相比,该工具简化了监控并节省了时间
AdminDroid 提供有关 Microsoft 365 使用和采用的全面详细信息,以提高资源使用效率并管理不活动用户。
此外,AdminDroid 还提供1800+ 预构建报告和30 个智能仪表板,让您一目了然地了解您的 Office 365 环境。该工具提供有关 Office 365 报告、审计、分析、使用统计、安全性和合规性等的报告。
此外,AdminDroid 还提供超过120 多个免费报告和仪表板。它包括有关用户、许可证、组、组成员、设备、登录活动、密码更改、许可证更改等的报告。免费版在自定义、计划和导出等报告功能上没有任何限制。为了满足您的 Azure AD 报告和审核需求,您可以下载 AdminDroid 提供的免费 Azure AD 报告工具,并了解它如何为您服务。
如果您有任何疑问,请通过评论部分与我们联系。




