如何在 Microsoft 365 中使用邮箱审核日志
在 Microsoft 365 中,可以运行邮箱审核日志来确定邮箱何时意外更新,或者邮箱中是否缺少项目。 例如,如果项目被移动或删除了意外或错误,则可能需要执行此操作。
注意:对于 vNext 环境,默认情况下,不会启用邮箱审核日志。 必须启用该功能,以便用户开始搜索。
如何运行和检查邮箱审核日志
邮箱审核日志记录允许用户获取非所有者和管理员执行的操作的相关信息。 邮箱审核日志记录仅适用于使用 Windows 远程 PowerShell 的 Audit Reporting Mailbox 自助服务组的成员。
注意
- 默认情况下,仅启用非所有者邮箱审核日志记录,并且禁用所有者邮箱审核日志记录。 如果必须执行所有者邮箱审核日志记录来调查特定问题,可以暂时启用此过程两周。
- 某些组织可能不允许使用邮箱审核日志记录。 在这种情况下,该功能将为你关闭。
若要调查此问题,请使用本部分中步骤 1 中提供的示例脚本创建和使用 Windows PowerShell 脚本,然后自定义搜索。 默认情况下,可以调查非所有者和管理员执行的操作。 此脚本在简化的逗号分隔值(.csv)文件中导出内容,以帮助排查有关缺少或意外更新的项目的报告。
重要
建议客户使用此示例脚本。 该脚本由 Microsoft Online Services 提供,以帮助进行某些调查。 Microsoft Online Services 脚本是通用的,它们应在所有客户环境中可用。 如果在运行脚本时发生错误,则应将脚本的内容用作为特定客户环境创建自定义脚本的示例。 Microsoft Online Services 为Microsoft 365 名客户提供脚本,而无需明示或暗示担保。
步骤 1:运行脚本
若要运行该脚本,请执行以下步骤:
打开文本编辑器(如记事本),然后将以下代码复制到文件中。 该代码使用
search-mailboxAuditLog
Microsoft Exchange Server 的一部分的命令。param ([PARAMETER(Mandatory=$TRUE,ValueFromPipeline=$FALSE)] [string]$Mailbox, [PARAMETER(Mandatory=$TRUE,ValueFromPipeline=$FALSE)] [string]$StartDate, [PARAMETER(Mandatory=$TRUE,ValueFromPipeline=$FALSE)] [string]$EndDate, [PARAMETER(Mandatory=$FALSE,ValueFromPipeline=$FALSE)] [string]$Subject, [PARAMETER(Mandatory=$False,ValueFromPipeline=$FALSE)] [switch]$IncludeFolderBind, [PARAMETER(Mandatory=$False,ValueFromPipeline=$FALSE)] [switch]$ReturnObject) BEGIN { [string[]]$LogParameters = @('Operation', 'LogonUserDisplayName', 'LastAccessed', 'DestFolderPathName', 'FolderPathName', 'ClientInfoString', 'ClientIPAddress', 'ClientMachineName', 'ClientProcessName', 'ClientVersion', 'LogonType', 'MailboxResolvedOwnerName', 'OperationResult') } END { if ($ReturnObject) {return $SearchResults} elseif ($SearchResults.count -gt 0) { $Date = get-date -Format yyMMdd_HHmmss $OutFileName = "AuditLogResults$Date.csv" write-host write-host -fore green "Posting results to file: $OutfileName" $SearchResults | export-csv $OutFileName -notypeinformation -encoding UTF8 } } PROCESS { write-host -fore green 'Searching Mailbox Audit Logs...' $SearchResults = @(search-mailboxAuditLog $Mailbox -StartDate $StartDate -EndDate $EndDate -LogonTypes Owner, Admin, Delegate -ShowDetails -resultsize 50000) write-host -fore green '$($SearchREsults.Count) Total entries Found' if (-not $IncludeFolderBind) { write-host -fore green 'Removing FolderBind operations.' $SearchResults = @($SearchResults | ? {$_.Operation -notlike 'FolderBind'}) write-host -fore green 'Filtered to $($SearchREsults.Count) Entries' } $SearchResults = @($SearchResults | select ($LogParameters + @{Name='Subject';e={if (($_.SourceItems.Count -eq 0) -or ($_.SourceItems.Count -eq $null)){$_.ItemSubject} else {($_.SourceItems[0].SourceItemSubject).TrimStart(' ')}}}, @{Name='CrossMailboxOp';e={if (@('SendAs','Create','Update') -contains $_.Operation) {'N/A'} else {$_.CrossMailboxOperation}}})) $LogParameters = @('Subject') + $LogParameters + @('CrossMailboxOp') If ($Subject -ne '' -and $Subject -ne $null) { write-host -fore green 'Searching for Subject: $Subject' $SearchResults = @($SearchResults | ? {$_.Subject -match $Subject -or $_.Subject -eq $Subject}) write-host -fore green 'Filtered to $($SearchREsults.Count) Entries' } $SearchResults = @($SearchResults | select $LogParameters) }
在“文件”菜单上,选择“另存为”。
在 “另存为类型 ”框中,选择“ 所有文件”。
在“文件名”框中,输入 Run-MailboxAuditLogSearcher.ps1,然后选择“保存”。
打开 Windows PowerShell,然后连接到 Windows 远程 PowerShell。
找到保存脚本的文件夹,然后运行脚本:
.\Run-MailboxAuditLogSearcher.ps1
注意
- 如果在不使用参数的情况下运行脚本,系统会提示输入以下默认参数:
- 邮箱
- StartDate
- EndDate
- 若要搜索当前日期中的条目,请在提示窗口中将一天添加到结束日期值。 例如,如果当前日期为 2017 年 3 月 14 日,并且希望在搜索中包含当前日期,请输入 3/15/2017 作为结束日期。
- 如果在不使用参数的情况下运行脚本,系统会提示输入以下默认参数:
步骤 2:自定义邮箱审核日志搜索
在 Microsoft 365 中,邮箱审核日志记录条目将保留在邮箱中 90 天。 系统会提示你指示搜索的开始日期和结束日期。 可以使用多个可选参数来自定义搜索。 有关这些参数的说明,请参阅“详细信息”部分。
如果在脚本运行后找到项,则会收到类似于以下消息的消息:
正在搜索邮箱审核日志...
共找到 11 个条目
删除 FolderBind 操作。
筛选为 1 个条目将结果发布到文件:AuditLogResults121024_142419.csv
此示例消息指示搜索过程已找到 11 个条目。 默认情况下, FolderBind 条目将被筛选掉,并且以下操作类型保持不变:
- 复制
- 创建
- HardDelete
- MessageBind
- 移动
- MoveToDeletedItems
- SendAs
- SendOnBehalf
- SoftDelete
- 更新
注意
FolderBind 操作指示非所有者访问邮箱的时间。 这是最常见的操作。 调查已更新或删除的项目时,无需查看 FolderBind 操作。
查看.csv文件的输出。 导出最有用的列,其中一些列合并,使输出更易于查看。 有关导出的列的详细信息,请参阅“详细信息”部分。
所有者邮箱审核日志记录
默认情况下,所有组织的邮箱审核日志记录都处于打开状态。 默认情况下启用邮箱审核的主要好处之一是无需管理审核的邮箱操作。 Microsoft为你管理这些操作,我们会在发布这些操作时自动添加新的邮箱操作进行审核。
但是,组织可能必须审核用户邮箱和共享邮箱的不同邮箱操作集。 有关如何更改针对每个登录类型审核的邮箱操作以及如何还原到Microsoft托管的默认操作的详细信息,请参阅 默认记录的更改或还原邮箱操作。
详细信息
可选脚本参数
以下列表描述了在与脚本一起使用时生成不同结果的 Run-MailboxAuditLogSearcher
可选参数:
IncludeFolderBind:阻止从输出中筛选 FolderBind 操作。 可以使用 FolderBind 信息调查邮箱访问问题。
例如,以下 cmdlet 搜索“测试用户 1”邮箱并包括所有操作:
.\Run-MailboxAuditLogSearcher.ps1 -IncludeFolderBind -Mailbox "<Test User 1gt;" -StartDate "<04/10/17gt;" -EndDate "<04/27/17gt;"
主题:允许您指定项目的主题,以限制对该项目执行的操作的搜索。
例如,以下 cmdlet 筛选掉所有输出,但主题设置为“好消息”的项目除外:
.\Run-MailboxAuditLogSearcher.ps1 -Subject "<Good News>" -Mailbox "<test1@contoso.comgt;" -StartDate "<04/10/17gt;" -EndDate "<04/27/17gt;"
ReturnObject:导致结果在屏幕上显示(但不导出到.csv文件)。
例如,以下 cmdlet 在屏幕上显示输出:
.\Run-MailboxAuditLogSearcher.ps1 -ReturnObject -Mailbox "<Test User 1gt;" -StartDate "<04/10/17gt;" -EndDate "<04/27/17gt;"
从.csv文件中导出的列
导出.csv文件最有用的列。 其中一些列合并,使输出更易于查看。 下表列出了导出的列。
列 | 说明 |
---|---|
Subject | 项目主题 |
操作 | 对项执行的操作 |
LogonUserDisplayName | 登录的用户的显示名称 |
LastAccessed | 执行操作的时间 |
DestFolderPathName | 移动操作的目标文件夹 |
FolderPathName | 文件夹的路径 |
ClientInfoString | 有关执行操作的客户端的详细信息 |
LastAccessed | 客户端计算机的 IP 地址 |
ClientMachineName | 客户端计算机的名称 |
ClientProcessName | 客户端应用程序进程的名称 |
ClientVersion | 客户端应用程序的版本 |
LogonType | 执行操作 的用户的登录类型注意 登录类型包括: - 非所有者 的委托 - 管理员 - 邮箱所有者 (默认情况下未记录) |
MailboxResolvedOwnerName | 邮箱用户的 解析名称注意 解析的名称采用以下格式: Domain\SamAccountName |
OperationResult | 操作 说明 操作结果的状态包括: - 失败 - 部分ucceeded - 成功 |
CrossMailboxOperation | 有关记录的操作是跨邮箱操作的信息(例如,在邮箱之间复制或移动邮件) |
有关邮箱审核日志记录的详细信息
Search-MailboxAuditLog cmdlet 用于步骤 1 中的示例脚本同步搜索单个邮箱。 也可以通过在 Windows 远程 PowerShell 中运行 cmdlet 来执行此操作。
有关 cmdlet 的详细信息,请转到以下 TechNet 文章:
可以异步搜索一个或多个邮箱。 为此,请在 Windows 远程 PowerShell 中运行以下 cmdlet:
New-MailboxAuditLogSearch
有关此 cmdlet 的详细信息,请转到以下文章:
有关默认邮箱审核日志记录条目的详细信息,请转到以下文章的“邮箱审核日志条目”部分: