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

[玩转系统] 导出 Microsoft 365 非活动用户报告

作者:精品下载站 日期:2024-12-14 06:30:49 浏览:12 分类:玩电脑

导出 Microsoft 365 非活动用户报告


您想要查找所有非活动的 Microsoft 365 用户。当没有活动时,保持用户帐户处于活动状态没有任何好处。不活动的用户帐户很容易成为黑客的目标,您应该禁用这些帐户。在本文中,您将了解如何导出 Microsoft 365 非活动用户报告。

什么是 Microsoft 365 非活动用户

非活动 Microsoft 365 用户是指用户在过去几天内未登录。每个组织的情况可能有所不同。有些人发现,如果过去 60 或 90 天内没有登录,则非活动帐户有效。有些人发现这是一个 30 天的期限。

互联网安全中心 (CIS) 建议在支持的情况下,在 45 天不活动后删除或禁用任何休眠帐户。

请参阅5.3:禁用休眠帐户

[玩转系统] 导出 Microsoft 365 非活动用户报告

重要提示:您需要 Microsoft Entra ID P1 或 P2 版本许可证才能查看上次登录日期。

在 Microsoft 365 管理中心检查用户上次登录日期

若要在 Microsoft 365 管理中心检查 Microsoft 365 用户上次登录日期,请按照以下步骤操作:

  1. 登录 Microsoft 365 管理中心

  2. 展开用户

  3. 点击活跃用户

  4. 选择用户

[玩转系统] 导出 Microsoft 365 非活动用户报告

  1. 点击帐户 > 查看过去 30 天

[玩转系统] 导出 Microsoft 365 非活动用户报告

  1. 将显示上次登录日期、状态和失败原因(如果有)。

[玩转系统] 导出 Microsoft 365 非活动用户报告

如果您想导出所有用户上次登录状态怎么办? PowerShell 来救援。

导出 Microsoft 365 非活动用户 PowerShell 脚本

Export-M365InactiveUsers.ps1 PowerShell 脚本将获取所有 Microsoft 365/Microsoft Entra ID 用户并将报告导出到 CSV 文件,该文件显示自上次登录以来已经过去了多少天。

注意LastSuccessfulSignInDate 值将在 6 小时内开始显示在报告中。该酒店的数据不会回填,并会在 2023 年 12 月 1 日之后开始记录登录情况。

对于每个用户,它都会收集以下信息:

  1. ID

  2. 用户主体名称

  3. 显示名称

  4. 电子邮件

  5. 用户类型

  6. 账户启用

  7. 上次成功登录日期

  8. 自上次登录以来的天数

  9. 创建日期时间

  10. 已获得许可

准备 Export-M365InactiveUsers PowerShell 脚本

(C:)驱动器上创建两个文件夹:

  • 温度

  • 脚本

下载 Export-M365InactiveUsers.ps1 PowerShell 脚本并将其放置在 C:\scripts 文件夹中。该脚本会将 CSV 文件导出到 C:\temp 文件夹。

确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Export-M365InactiveUsers.ps1 并将其放置在 C:\scripts 文件夹中。

<#
    .SYNOPSIS
    Export-M365InactiveUsers.ps1

    .DESCRIPTION
    Export Microsoft 365/Microsoft Entra ID inactive users report.

    .LINK
    www.a-d.site/export-microsoft-365-inactive-users/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.a-d.site
    LinkedIn:   linkedin.com/in/a-d

    .CHANGELOG
    V1.00, 12/13/2023 - Initial version
    V1.10, 02/26/2024 - Added IsLicensed column
    V1.20, 04/02/2024 - Calculate DaysSinceLastSignIn from LastSuccessfulSignInDateTime property
#>

# Export path for CSV file
$CSVPath = "C:\Temp\InactiveUsers.csv"

# Parameters
$InactiveUsers = @()

# Connect to Microsoft Graph API
Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"

# Get properties
$Properties = @(
    'Id',
    'DisplayName',
    'Mail',
    'UserPrincipalName',
    'UserType',
    'AccountEnabled',
    'SignInActivity',
    'CreatedDateTime',
    'AssignedLicenses'
)

# Get all users along with the properties
$AllUsers = Get-MgBetaUser -All -Property $Properties | Select-Object $Properties

foreach ($User in $AllUsers) {
    $LastSuccessfulSignInDate = if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
        $User.SignInActivity.LastSuccessfulSignInDateTime
    }
    else {
        "Never Signed-in."
    }

    $DaysSinceLastSignIn = if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
        (New-TimeSpan -Start $User.SignInActivity.LastSuccessfulSignInDateTime -End (Get-Date)).Days
    }
    else {
        "N/A"
    }

    # Check if the user is licensed
    $IsLicensed = if ($User.AssignedLicenses) {
        "Yes"
    }
    else {
        "No"
    }

    # Collect data
    if (!$User.SignInActivity.LastSuccessfulSignInDateTime -or (Get-Date $User.SignInActivity.LastSuccessfulSignInDateTime)) {
        $InactiveUsers += [PSCustomObject]@{
            Id                       = $User.Id
            UserPrincipalName        = $User.UserPrincipalName
            DisplayName              = $User.DisplayName
            Email                    = $User.Mail
            UserType                 = $User.UserType
            AccountEnabled           = $User.AccountEnabled
            LastSuccessfulSignInDate = $LastSuccessfulSignInDate
            DaysSinceLastSignIn      = $DaysSinceLastSignIn
            CreatedDateTime          = $User.CreatedDateTime
            IsLicensed               = $IsLicensed
        }
    }
}

# Display data using Out-GridView
$InactiveUsers | Out-GridView -Title "Inactive Users"

# Export data to CSV file
try {
    $InactiveUsers | Export-Csv -Path $CSVPath -NoTypeInformation -Encoding UTF8
    Write-Host "Script completed. Results exported to $CSVPath." -ForegroundColor Cyan
}
catch {
    Write-Host "Error occurred while exporting to CSV: $_" -ForegroundColor Red
}
  • 第 23 行:编辑 CSV 文件路径

连接到 Microsoft Graph PowerShell

在我们进一步继续并获取所有用户的非活动状态之前,我们需要安装并连接到 Microsoft Graph PowerShell。

以管理员身份启动 Windows PowerShell 并运行以下命令。

Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force

重要提示:始终安装 Microsoft Graph PowerShellMicrosoft Graph Beta PowerShell 模块。这是因为某些 cmdlet 在最终版本中尚不可用,并且无法运行。在运行 cmdlet 或脚本之前将两个模块更新到最新版本,以防止出现错误和不正确的结果。

运行 Connect-MgGraph cmdlet。

Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"

运行 Export-M365InactiveUsers PowerShell 脚本

使用 PowerShell 获取所有非活动用户。运行以下命令来运行脚本 Export-M365InactiveUsers.ps1。

c:\scripts\.\Export-M365InactiveUsers.ps1

网格视图

Out-GridView 将显示包含所有非活动用户的列以及更多信息。

[玩转系统] 导出 Microsoft 365 非活动用户报告

打开 Microsoft 365 非活动用户报告 CSV 文件

Export-M365InactiveUsers.ps1 PowerShell 脚本会将 Microsft 365 用户不活动情况导出到 CSV 文件。在路径 C:\temp 中找到文件 InactiveUsers.csv

[玩转系统] 导出 Microsoft 365 非活动用户报告

使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。

[玩转系统] 导出 Microsoft 365 非活动用户报告

这是否可以帮助您将 Microsoft 365 非活动用户导出到 CSV 文件?

注意:您想了解所有三个SignIn 属性以及如何检索它们吗?请阅读文章导出 Microsoft 365 用户上次登录日期和时间。

了解更多:阻止从共享邮箱登录 »

结论

您了解了如何从 Microsoft 365 导出非活动用户。使用 Export-M365InactiveUsers PowerShell 脚本获取非活动用户报告并仔细查看。检查为什么没有用户登录活动并禁用不活动的用户帐户以保护您的组织。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 将 Azure AD 用户导出为 CSV。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯