导出 Microsoft 365 非活动用户报告
您想要查找所有非活动的 Microsoft 365 用户。当没有活动时,保持用户帐户处于活动状态没有任何好处。不活动的用户帐户很容易成为黑客的目标,您应该禁用这些帐户。在本文中,您将了解如何导出 Microsoft 365 非活动用户报告。
非活动 Microsoft 365 用户是指用户在过去几天内未登录。每个组织的情况可能有所不同。有些人发现,如果过去 60 或 90 天内没有登录,则非活动帐户有效。有些人发现这是一个 30 天的期限。
这互联网安全中心 (CIS)建议在支持的情况下,在 45 天不活动后删除或禁用任何休眠帐户。
看5.3:禁用休眠帐户。
重要的:您需要 Microsoft Entra ID P1 或 P2 版本许可证才能查看上次登录日期。
在 Microsoft 365 管理中心检查用户上次登录日期
若要在 Microsoft 365 管理中心检查 Microsoft 365 用户上次登录日期,请按照以下步骤操作:
- 登录到Microsoft 365 管理中心
- 扩张用户
- 点击活跃用户
- 选择用户
- 点击帐户 > 查看过去 30 天
- 将显示上次登录日期、状态和失败原因(如果有)。
如果您想导出所有用户上次登录状态怎么办? PowerShell 来救援。
导出 Microsoft 365 非活动用户 PowerShell 脚本
Export-M365InactiveUsers.ps1 PowerShell 脚本将获取所有 Microsoft 365/Microsoft Entra ID 用户并将报告导出到 CSV 文件,该文件显示自上次登录以来已经过去了多少天。
笔记:这上次成功登录日期值将在 6 小时内开始出现在报告中。该媒体资源的数据不会回填,并会在 2023 年 12 月 1 日之后开始记录登录情况。
对于每个用户,它都会收集以下信息:
- ID
- 用户主体名称
- 显示名称
- 电子邮件
- 用户类型
- 账户启用
- 上次成功登录日期
- 自上次登录以来的天数
- 创建日期时间
- 已获得许可
准备 Export-M365InactiveUsers PowerShell 脚本
上创建两个文件夹(中:)驾驶:
- 温度
- 脚本
下载 Export-M365InactiveUsers.ps1 PowerShell 脚本并将其放入C:脚本文件夹。该脚本会将 CSV 文件导出到C:温度文件夹。
确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。
另一种选择是将以下代码复制并粘贴到记事本中。给它起个名字导出-M365InactiveUsers.ps1并将其放置在C:脚本文件夹。
<#
.SYNOPSIS
Export-M365InactiveUsers.ps1
.DESCRIPTION
Export Microsoft 365/Microsoft Entra ID inactive users report.
.LINK
www.alitajran.com/export-microsoft-365-inactive-users/
.NOTES
Written by: ALI TAJRAN
Website: www.alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 12/13/2023 - Initial version
V1.10, 02/26/2024 - Added IsLicensed column
V1.20, 04/02/2024 - Calculate DaysSinceLastSignIn column from LastSuccessfulSignInDateTime property
#>
# Export path for CSV file
$CSVPath = "C:TempInactiveUsers.csv"
# Initialize a List to store the data
$Report = [System.Collections.Generic.List[Object]]::new()
# 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-MgUser -All -Property $Properties | Select-Object $Properties
foreach ($User in $AllUsers) {
# Default values for users who have never signed in
$LastSuccessfulSignInDate = "Never Signed-in."
$DaysSinceLastSignIn = "N/A"
# Check if the user has a successful sign-in date
if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
$LastSuccessfulSignInDate = $User.SignInActivity.LastSuccessfulSignInDateTime
$DaysSinceLastSignIn = (New-TimeSpan -Start $User.SignInActivity.LastSuccessfulSignInDateTime -End (Get-Date)).Days
}
# Check if the user is licensed
$IsLicensed = if ($User.AssignedLicenses) { "Yes" } else { "No" }
# Collect data in a custom object
$ReportLine = [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
}
# Add the report line to the List
$Report.Add($ReportLine)
}
# Display data using Out-GridView
$Report | Out-GridView -Title "Inactive Users"
# Export data to CSV file
try {
$Report | 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
重要的:在运行 cmdlet 或脚本之前,请务必更新到最新的 Microsoft Graph PowerShell 模块版本,以防止出现错误和不正确的结果。
运行连接-MgGraphcmdlet。
Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"
运行 Export-M365InactiveUsers PowerShell 脚本
使用 PowerShell 获取所有非活动用户。运行以下命令来运行脚本 Export-M365InactiveUsers.ps1。
c:scripts.Export-M365InactiveUsers.ps1
网格视图
一个网格视图将显示包含所有非活动用户的列以及更多信息。
打开 Microsoft 365 非活动用户报告 CSV 文件
Export-M365InactiveUsers.ps1 PowerShell 脚本会将 Microsoft 365 用户不活动状态导出到 CSV 文件。找到文件非活动用户.csv在路径中C:温度。
使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。
这是否可以帮助您将 Microsoft 365 非活动用户导出到 CSV 文件?
笔记:你想了解这三点吗登录属性以及如何检索它们?阅读文章导出 Microsoft 365 用户上次登录日期和时间。
结论
您了解了如何从 Microsoft 365 导出非活动用户。使用 Export-M365InactiveUsers PowerShell 脚本获取非活动用户报告并仔细查看。检查为什么没有用户登录活动并禁用不活动的用户帐户以保护您的组织。
您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 将 Microsoft Entra ID 用户导出为 CSV。不要忘记关注我们并分享这篇文章。
