如何使用邮箱审核日志中的Office 365
备注
Office 365 ProPlus 正在重命名为 适用于企业的 Microsoft 365 应用。 有关此更改的详细信息, 请阅读此博客文章。
原始 KB 编号: 4021960
摘要
在Microsoft Office 365中,可以运行邮箱审核日志以确定邮箱何时意外更新或邮箱中是否缺少项目。 您可能必须这样做,例如,如果移动了项目,或者这些项目被意外或错误地删除。
对于 vNext 环境,请注意,邮箱审核日志默认情况下未启用,并且需要在开始搜索之前为用户打开。
如何运行和检查邮箱审核日志
邮箱审核日志记录允许用户获取有关非所有者和管理员执行的操作的信息。 只有使用远程 PowerShell,审核报告邮箱自助服务组的成员才能Windows日志记录。
备注
- 默认情况下,仅启用非所有者邮箱审核日志记录,并禁用所有者邮箱审核日志记录。 如果您必须执行所有者邮箱审核日志记录以调查特定问题,您可以暂时启用此过程两周。
- 某些组织可能不允许使用邮箱审核日志记录,因此已禁用该功能。
若要调查此问题,请使用本节步骤 1 中提供的示例脚本创建和使用 Windows PowerShell 脚本,然后自定义搜索。 默认情况下,您可以调查非所有者和管理员执行的操作。 此脚本以简化的逗号分隔值 (.csv) 文件导出内容,以帮助您解决有关缺失或意外更新的项目的报告。
重要
鼓励客户使用由客户提供的脚本Microsoft Online Services调查提供帮助。 Microsoft Online Services脚本是通用的,并且应在所有客户环境中都可用。 如果脚本运行时发生错误,脚本的内容应用作为特定客户环境创建自定义脚本的示例。 Microsoft Online Services提供脚本,方便客户Office 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:自定义邮箱审核日志搜索
在Office 365,邮箱审核日志记录条目在邮箱中保留 90 天。 系统将提示您指示搜索的开始日期和结束日期。 可以使用几个可选参数来自定义搜索。 有关这些参数的说明,请参阅"详细信息"部分。
如果在脚本运行后找到项目,您将收到一条类似于以下内容的消息:
此示例消息指示搜索过程已找到 11 个条目。 默认情况下, 将筛选出 FolderBind 条目,并保留以下操作类型:
- Copy
- Create
- HardDelete
- MessageBind
- Move
- MoveToDeletedItems
- SendAs
- SendOnBehalf
- SoftDelete
- Update
备注
FolderBind 操作指示非所有者访问邮箱的时间。 这是最常见的操作。 调查更新或删除的项目时,不需要查看 FolderBind 操作。
查看文件.csv。 将导出最有用的列,并合并其中一些列,以便更轻松地查看输出。 有关导出的列详细信息,请参阅"详细信息"部分。
所有者邮箱审核日志记录
默认情况下。 所有者审核日志记录未打开。 只有当必须调查邮箱所有者的操作时,才应使用。 它应在有限的一段时间(大约两周)内使用。 这是因为邮件审核日志存储在邮箱中,这可能会导致邮箱转储站超出大小限制。
若要启用所有者审核日志记录,请按照以下步骤操作:
确定是否启用邮箱审核日志记录。 为此,请运行以下 cmdlet:
Get-Mailbox <useridentity> | ft AuditEnabled如果结果为 True, 请跳过此步骤。 如果结果为 False, 请运行以下 cmdlet Windows PowerShell:
Set-Mailbox <useridentity> -AuditEnabled $true启用所有者审核日志记录。 为此,请运行以下 cmdlet:
Set-Mailbox <useridentity> -AuditOwner "Create,HardDelete,Move,MoveToDeletedItems,SoftDelete,Update"重新运行 Run-MailboxAuditLogSearcher.ps1,然后查看数据。
疑难解答完成后,禁用所有者审核日志记录。 为此,请运行以下 cmdlet:
Set-Mailbox <useridentity> -AuditOwner $none
更多信息
可选脚本参数
以下列表描述了与脚本一同使用时生成不同结果的可选 Run-MailboxAuditLogSearcher 参数:
IncludeFolderBind: 使用此开关时,不会从输出中筛选 FolderBind 操作。 可以使用 FolderBind 信息调查邮箱访问问题。
例如,以下 cmdlet 搜索"Test User 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文件。 这些列中的一些列已合并,以便更轻松地查看输出。 下表列出了导出的列。
| 列 | 说明 |
|---|---|
| 主题 | 项目主题 |
| Operation | 对项目执行的操作 |
| LogonUserDisplayName | 记录 o 的用户的显示名称 |
| LastAccessed | 操作执行时间 |
| DestFolderPathName | 移动操作的目标文件夹 |
| FolderPathName | 文件夹路径 |
| ClientInfoString | 有关执行该操作的客户端的详细信息 |
| LastAccessed | 客户端计算机的 IP 地址 |
| ClientMachineName | 客户端计算机的名称 |
| ClientProcessName | 客户端应用程序进程的名称 |
| ClientVersion | 客户端应用程序的版本 |
| LogonType | 执行该操作的用户的登录类型注意 登录类型包括: - 委派非所有者 - 管理员 - 默认情况下 (未记录邮箱所有者) |
| MailboxResolvedOwnerName | 邮箱用户的解析名称注意 已解析的名称采用以下格式:Domain\SamAccountName |
| OperationResult | 操作的状态注意 操作结果包括: - 已失败 - PartiallySucceeded - 成功 |
| CrossMailboxOperation | 有关所记录的操作是否是跨邮箱操作的信息 (例如,在邮箱之间复制或移动) |
有关邮箱审核日志记录详细信息
Search-MailboxAuditLog cmdlet 在步骤 1 中的示例脚本中用于同步搜索单个邮箱。 您还可以通过运行远程 PowerShell 中的 cmdlet 来Windows此功能。
有关 cmdlet 详细信息,请转到以下 TechNet 文章:
您可以异步搜索一个或多个邮箱。 为此,在远程 PowerShell 中Windows cmdlet:
New-MailboxAuditLogSearch有关此 cmdlet 详细信息,请转到以下 TechNet 文章:
有关默认邮箱审核日志记录条目详细信息,请转到以下 TechNet 文章的"邮箱审核日志条目"部分: