如何在 Microsoft 365 中使用信箱稽核記錄

原始 KB 編號: 4021960

摘要

在 Microsoft 365 中,您可以執行信箱稽核記錄,以判斷信箱何時意外更新,或信箱中是否遺漏專案。 您可能必須這麼做,例如,如果移動專案,或是意外或不正確地刪除專案。

針對 vNext 環境,請注意預設不會啟用信箱稽核記錄,而且必須先為用戶開啟,才能開始搜尋。

如何執行和檢查信箱稽核記錄

信箱稽核記錄可讓使用者取得非擁有者和系統管理員所執行動作的相關信息。 只有使用 Windows 遠端 PowerShell,稽核報告信箱自助群組的成員才能使用信箱稽核記錄。

注意事項

  • 根據預設,只會啟用非擁有者信箱稽核記錄,並停用擁有者信箱稽核記錄。 如果您必須執行擁有者信箱稽核記錄來調查特定問題,您可以暫時啟用兩周的程式。
  • 有些組織可能無法讓您使用信箱稽核記錄,因此已關閉此功能。

若要調查此問題,請使用本節步驟 1 中提供的範例腳本來建立和使用 Windows PowerShell 腳本,然後自定義搜尋。 根據預設,您可以調查非擁有者和系統管理員所執行的動作。 此腳本會將內容以簡化的逗號分隔值匯出 (.csv) 檔案,以協助您針對遺失或未預期更新之專案的報表進行疑難解答。

重要事項

建議客戶使用 Microsoft Online Services 所提供的腳本來協助進行特定調查。 Microsoft Online Services 腳本是泛型的,應該可在所有客戶環境中使用。 如果文稿執行時發生錯誤,應該使用腳本的內容作為範例,為特定客戶環境建立自定義腳本。 Microsoft Online Services 為 Microsoft 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
    • 若要搜尋當天的專案,請在提示視窗中將一天新增至結束日期值。 例如,如果目前的日期是 3/14/2017,而且您想要在搜尋中包含目前的日期,請輸入 3/15/2017 作為結束日期。

在 Microsoft 365 中,信箱稽核記錄專案會在信箱中保留 90 天。 系統會提示您指出搜尋的開始日期和結束日期。 您可以使用數個選擇性參數來自定義搜尋。 如需這些參數的描述,請參閱一節。

如果在文稿執行之後找到專案,您會收到類似下列的訊息:

執行腳本後訊息的螢幕快照。

此範例訊息指出搜尋程式已找到11個專案。 根據預設, FolderBind 專案會篩選掉,並保留下列作業類型:

  • Copy
  • 建立
  • HardDelete
  • MessageBind
  • Move
  • MoveToDeletedItems
  • SendAs
  • SendOnBehalf
  • SoftDelete
  • 更新

注意事項

FolderBind 作業會指出非擁有者存取信箱的時間。 這是最常見的作業。 當您調查已更新或刪除的專案時,不需要檢視 FolderBind 作業。

檢閱 .csv 檔案的輸出。 匯出最有用的數據行,並合併其中一些數據行,讓輸出更容易檢閱。 如需匯出之數據行的詳細資訊,請參閱一節。

擁有者信箱稽核記錄

預設值為 。 未開啟擁有者稽核記錄。 只有當您必須調查信箱擁有者所採取的動作時,才應該使用它。 它應該在一段有限的期間內使用,大約兩周。 這是因為稽核記錄項目會儲存在信箱中,而這可能會導致信箱傾印機超過大小限制。

若要啟用擁有者稽核記錄,請遵循下列步驟:

  1. 判斷信箱稽核記錄是否已啟用。 若要這樣做,請執行下列 Cmdlet:

    Get-Mailbox <useridentity> | ft AuditEnabled
    
  2. 如果結果為 True,請略過此步驟。 如果結果為 False,請在 Windows PowerShell 中執行下列 Cmdlet:

    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 會搜尋 「測試使用者 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 檔案最實用的數據行。 其中一些數據行會合併,讓輸出更容易檢閱。 下表列出匯出的數據行。

描述
主旨 專案的主旨
作業 對專案執行的動作
LogonUserDisplayName 記錄的用戶顯示名稱
LastAccessed 執行作業的時間
DestFolderPathName 移動作業的目的地資料夾
FolderPathName 資料夾的路徑
ClientInfoString 執行作業之客戶端的詳細數據
LastAccessed 用戶端電腦的IP位址
ClientMachineName 用戶端電腦的名稱
ClientProcessName 用戶端應用程式程序的名稱
ClientVersion 用戶端應用程式的版本
LogonType 執行註銷類型作業
之使用者的登入類型包含下列專案:
- 非擁有者的
委派 - 系統管理員
- 信箱擁有者 (預設不會記錄)
MailboxResolvedOwnerName 信箱使用者
的已解析名稱注意解析的名稱格式如下:
Domain\SamAccountName
OperationResult 作業
的狀態注意作業結果包括:
- Failed
- PartiallySucceeded
- Succeeded
CrossMailboxOperation 記錄作業的相關信息是否為跨信箱作業 (例如,在信箱之間複製或移動郵件)

信箱稽核記錄的詳細資訊

  • 在步驟 1 的範例腳本中,會使用 Search-MailboxAuditLog Cmdlet 同步搜尋單一信箱。 您也可以在 Windows 遠端 PowerShell 中執行 Cmdlet 來執行此動作。

    如需 Cmdlet 的詳細資訊,請移至下列 TechNet 文章:

    Search-MailboxAuditLog

  • 您可以異步搜尋一或多個信箱。 若要這樣做,請在 Windows 遠端 PowerShell 中執行下列 Cmdlet:

    New-MailboxAuditLogSearch
    

    如需此 Cmdlet 的詳細資訊,請移至下列 TechNet 文章:

    New-MailboxAuditLogSearch

    如需預設信箱稽核記錄項目的詳細資訊,請移至下列TechNet文章的一節:

    Exchange 2016 中的信箱稽核記錄