如何使用邮箱审核日志中的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:运行脚本

若要运行脚本,请按照以下步骤操作:

  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)
        }
    
  2. 在“文件”菜单上单击“另存为”。

  3. 在"另存为类型"框中,单击"所有文件"。

  4. 在"文件名" 框中,键入 Run-MailboxAuditLogSearcher.ps1,然后单击"保存 "。

  5. 启动Windows PowerShell,然后连接到Windows远程 PowerShell。

  6. 找到保存脚本的目录,然后运行脚本。

    .\Run-MailboxAuditLogSearcher.ps1
    

    备注

    • 如果运行不带参数的脚本,系统将提示您输入以下默认参数:
      • 邮箱
      • StartDate
      • EndDate
    • 若要搜索当前日期的条目,在提示窗口中向结束日期值添加一天。 例如,如果当前日期为 2017 年 3 月 14 日,并且您希望在搜索中包括当前日期,请输入 3/15/2017 作为结束日期。

在Office 365,邮箱审核日志记录条目在邮箱中保留 90 天。 系统将提示您指示搜索的开始日期和结束日期。 可以使用几个可选参数来自定义搜索。 有关这些参数的说明,请参阅"详细信息"部分。

如果在脚本运行后找到项目,您将收到一条类似于以下内容的消息:

运行脚本后的消息屏幕截图。

此示例消息指示搜索过程已找到 11 个条目。 默认情况下, 将筛选出 FolderBind 条目,并保留以下操作类型:

  • Copy
  • Create
  • HardDelete
  • MessageBind
  • Move
  • MoveToDeletedItems
  • SendAs
  • SendOnBehalf
  • SoftDelete
  • Update

备注

FolderBind 操作指示非所有者访问邮箱的时间。 这是最常见的操作。 调查更新或删除的项目时,不需要查看 FolderBind 操作。

查看文件.csv。 将导出最有用的列,并合并其中一些列,以便更轻松地查看输出。 有关导出的列详细信息,请参阅"详细信息"部分。

所有者邮箱审核日志记录

默认情况下。 所有者审核日志记录未打开。 只有当必须调查邮箱所有者的操作时,才应使用。 它应在有限的一段时间(大约两周)内使用。 这是因为邮件审核日志存储在邮箱中,这可能会导致邮箱转储站超出大小限制。

若要启用所有者审核日志记录,请按照以下步骤操作:

  1. 确定是否启用邮箱审核日志记录。 为此,请运行以下 cmdlet:

    Get-Mailbox <useridentity> | ft AuditEnabled
    
  2. 如果结果为 True, 请跳过此步骤。 如果结果为 False, 请运行以下 cmdlet Windows PowerShell:

    Set-Mailbox <useridentity> -AuditEnabled $true
    
  3. 启用所有者审核日志记录。 为此,请运行以下 cmdlet:

    Set-Mailbox <useridentity> -AuditOwner "Create,HardDelete,Move,MoveToDeletedItems,SoftDelete,Update"
    
  4. 重新运行 Run-MailboxAuditLogSearcher.ps1,然后查看数据。

  5. 疑难解答完成后,禁用所有者审核日志记录。 为此,请运行以下 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;&quot
    
  • 主题:使用此开关时,可以指定项目的主题,以便限制对该项目执行的操作的搜索。

    例如,以下 cmdlet 筛选出所有输出,主题设置为"好消息"的项目除外:

    .\Run-MailboxAuditLogSearcher.ps1 -Subject "<Good News>" -Mailbox "<test1@contoso.comgt;" -StartDate "<04/10/17gt;" -EndDate "<04/27/17gt;&quot
    
  • ReturnObject: 使用此开关时,结果显示在屏幕上,但不导出到.csv文件。

    例如,以下 cmdlet 将输出显示在屏幕上:

    .\Run-MailboxAuditLogSearcher.ps1 -ReturnObject -Mailbox "<Test User 1gt;" -StartDate "<04/10/17gt;" -EndDate "<04/27/17gt;&quot
    

从文件导出.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 文章:

    Search-MailboxAuditLog

  • 您可以异步搜索一个或多个邮箱。 为此,在远程 PowerShell 中Windows cmdlet:

    New-MailboxAuditLogSearch
    

    有关此 cmdlet 详细信息,请转到以下 TechNet 文章:

    New-MailboxAuditLogSearch

    有关默认邮箱审核日志记录条目详细信息,请转到以下 TechNet 文章的"邮箱审核日志条目"部分:

    Exchange 2016 中的邮箱审核日志记录