网站搜索

使用 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 用户上次的交互式和非交互式登录活动。

脚本亮点:
  1. 单个脚本允许您生成 10 多个不同的上次登录报告。
  2. 该脚本也可以使用启用 MFA 的帐户执行。
  3. 该脚本支持基于证书的身份验证 (CBA)。
  4. 允许您通过导入 CSV 获取用户列表的上次登录时间报告。
  5. 您可以根据非活动天数生成报告。
  6. 可以根据用户/所有邮箱类型过滤结果。
  7. 结果可以过滤到单独列出从未登录邮箱。
  8. 单独为启用登录的用户生成报告。
  9. 支持单独过滤许可用户。
  10. 单独获取管理员的登录时间报告
  11. 将结果导出到 CSV 文件。
  12. 分配的许可证列将显示用户友好名称,例如“Office 365 Enterprise E3”而不是“ENTERPRISEPACK”。
  13. 在您确认后,自动安装 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 上次登录时间报告”脚本的一些用例。我相信你会发现很多。请将它们留在下面的评论中以帮助其他管理员。

  1. 获取所有用户的上次登录日期和时间
  2. 导出用户列表的上次登录时间(输入 CSV)
  3. 根据不活跃天数获取不活跃用户报告
  4. 检查管理员上次登录日期
  5. 列出从未登录过的邮箱用户
  6. 获取用户邮箱的上次登录时间报告
  7. 查看启用登录的用户的上次登录时间报告
  8. 计划 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 用户上次登录时间”脚本的步骤:
  1. 要运行脚本,请导航到脚本位置并执行 ./LastLogonTimeReport.ps1。该脚本可以带/不带参数执行。要使用参数运行,请参阅用例。按 Enter 键后,系统将提示您提供 Office 365 管理员凭据。
  2. 这将需要一些时间,具体取决于您环境中邮箱的数量。脚本执行后,会询问是否打开输出文件,并将其存储在当前工作目录中。

注意:

由于 LastLogonTime 属性也由某些后台任务(例如邮箱助手)更新,因此此报告(从 Get-MailboxStatistics 检索的 LastLogonTime)可能会提供不准确的数据。如果您想根据“真实”用户的上次活动获取用户的上次登录时间,可以参考将 Office 365 用户真实上次登录时间报告导出到 CSV 博客。

获取更详细的用户上次活动日期报告:

上面的报告仅列出了邮箱的上次活动时间报告,但它不会考虑其他 Office 365 服务,如 SharePoint、Teams 等。此外,您无法区分执行了哪些操作,如接收、发送或阅读邮件等。有关 Microsoft 365 用户活动的更详细报告,您可以尝试 AdminDroid Office 365 报告工具。

AdminDroid 提供40 多个报告来确定用户的不活动情况。这包括,

  • 交换不活跃用户

    • 按上次邮件发送时间
    • 按上次邮件阅读时间
    • 按上次收到邮件的时间
    • 截至上次活动时间
    • 按上次登录时间
  • SharePoint 非活动用户

    • 按上次文件访问时间
    • 按上次外部文件共享
    • 按上次文件同步时间
    • 按上次内部文件共享
    • 按上次访问页面的时间
    • 按上次 SharePoint 活动时间
  • 团队非活跃用户

    • 按上次发送的团队聊天消息
    • 按上次通话活动
    • 按上次会议活动
    • 按最后发送私信时间
    • 按上次 Team 活动
  • OneDrive 非活跃用户

    • 按上次文件访问时间
    • 按上次外部文件共享
    • 按上次文件同步时间
    • 按上次内部文件共享
    • 按上次访问页面的时间
  • Yammer 非活动用户

    • 截至上次收到喜欢
    • 根据上次发布的帖子
    • 截至最后一篇文章阅读时间
    • 按上次活跃时间
    • 截至上次 Yammer 活动时间
  • 非活跃用户概览报告

    • 每个 O365 服务的非活跃用户报告
    • 基于城市、州、县、浏览器、设备操作系统等的上次登录时间报告。
    • 基于邮箱应用程序使用情况的非活动邮箱(Outlook for Mac/Windows、OWA、Outlook for mobile 等)

AdminDroid 提供非活动用户报告板,使您能够在一个集中位置监控所有 Microsoft 365 服务中的用户非活动情况。与导航到不同位置检查单个报告相比,该工具简化了监控并节省了时间

AdminDroid 提供有关 Microsoft 365 使用和采用的全面详细信息,以提高资源使用效率并管理不活动用户。

此外,AdminDroid 还提供1800+ 预构建报告和30 个智能仪表板,让您一目了然地了解您的 Office 365 环境。该工具提供有关 Office 365 报告、审计、分析、使用统计、安全性和合规性等的报告。

此外,AdminDroid 还提供超过120 多个免费报告和仪表板。它包括有关用户、许可证、组、组成员、设备、登录活动、密码更改、许可证更改等的报告。免费版在自定义、计划和导出等报告功能上没有任何限制。为了满足您的 Azure AD 报告和审核需求,您可以下载 AdminDroid 提供的免费 Azure AD 报告工具,并了解它如何为您服务。

如果您有任何疑问,请通过评论部分与我们联系。

相关文章