共用方式為


about_Logging

簡短描述

PowerShell 會將引擎、提供者和 Cmdlet 的內部作業記錄到 Windows 事件記錄檔。

詳細描述

PowerShell 會記錄 PowerShell 作業的詳細數據,例如啟動和停止引擎和提供者,以及執行 PowerShell 命令。

注意

Windows PowerShell 5.1(和較舊版本)包含 Windows 事件記錄檔的 EventLog Cmdlet。 在這些版本中,若要顯示 EventLog Cmdlet 的清單,請輸入:Get-Command -Noun EventLog 如需詳細資訊,請參閱 Windows PowerShell 版本的 Cmdlet 檔和 about_EventLogs

如需 PowerShell 7 中記錄的相關信息,請參閱下列文章:

在 Windows 上檢視 PowerShell 事件記錄檔專案

您可以使用 Windows 事件檢視器 來檢視 PowerShell 記錄。 事件記錄檔位於 Application and Services 記錄群組中,並命名為 Microsoft-Windows-PowerShell 相關聯的 ETW 提供者 GUID{A0C1853B-5C40-4B15-8766-3CF1C58F985A}

啟用腳本區塊記錄時,PowerShell 會將下列事件記錄至 Microsoft-Windows-PowerShell/Operational 記錄檔:

欄位
EventId 4104 / 0x1008
通道 Operational
層級 Verbose
OpCode Create
Task CommandStart
關鍵字 Runspace

啟用腳本區塊記錄

當您啟用文本區塊記錄時,PowerShell 會記錄它處理的所有腳本區塊內容。 啟用之後,任何新的PowerShell工作會記錄這項資訊。

注意

若要確保敏感數據受到保護,請在針對診斷用途以外的任何專案使用腳本區塊記錄時,啟用受保護的事件記錄。

腳本區塊記錄可以透過組策略或登錄設定來啟用。

使用群組原則

若要啟用自動轉譯,請透過 管理員 istrative 範本 -Windows 元件 ->>Windows PowerShell,在組策略中啟用 [開啟 PowerShell 腳本區塊記錄] 功能。

使用登錄

執行下列函式:

function Enable-PSScriptBlockLogging {
    $basePath = @(
        'HKLM:\Software\Policies\Microsoft\Windows'
        'PowerShell\ScriptBlockLogging'
    ) -join '\'

    if (-not (Test-Path $basePath)) {
        $null = New-Item $basePath -Force
    }

    Set-ItemProperty $basePath -Name EnableScriptBlockLogging -Value "1"
}

受保護的事件記錄

增加系統上記錄層級會增加記錄內容可能包含敏感數據的可能性。 例如,啟用腳本記錄時,腳本所使用的認證或其他敏感數據可以寫入事件記錄檔。 當已記錄敏感數據的電腦遭到入侵時,記錄可以提供攻擊者擴充其觸達所需的資訊。

為了保護這項資訊,Windows 10 引進受保護的事件記錄。 受保護的事件記錄可讓參與的應用程式加密寫入事件記錄檔的敏感數據。 稍後,您可以在更安全且集中式的記錄收集器上解密和處理這些記錄。

事件記錄檔內容會使用IETF密碼編譯訊息語法 (CMS) 標準來保護。 CMS 使用公鑰密碼編譯。 用來加密內容和解密內容的金鑰會分開。

公鑰可以廣泛共用,而且不是敏感數據。 使用此公鑰加密的任何內容只能由私鑰解密。 如需公鑰密碼編譯的詳細資訊,請參閱 維琪百科 - 公鑰密碼編譯

若要啟用受保護的事件記錄原則,請將公鑰部署到具有事件記錄檔數據要保護的所有機器。 對應的私鑰可用來在更安全的位置處理事件記錄檔,例如中央事件記錄收集器或 SIEM 匯總工具。 您可以在 Azure 中設定 SIEM。 如需詳細資訊,請參閱 泛型 SIEM 整合

透過組策略啟用受保護的事件記錄

若要啟用受保護的事件記錄,請透過 Administrative Templates -> Windows Components -> Event Logging啟用Enable Protected Event Logging組策略中的功能。 此設定需要加密憑證,您可以在下列其中一種形式中提供:

  • base-64 編碼 X.509 憑證的內容(例如,如憑證管理員中的 選項所 Export 提供)。
  • 可在本機計算機證書存儲中找到之憑證的指紋(可由 PKI 基礎結構部署)。
  • 憑證的完整路徑(可以是本機或遠端共用)。
  • 包含憑證或憑證之目錄的路徑(可以是本機或遠端共用)。
  • 可在本機計算機證書存儲中找到之憑證的主體名稱(可由 PKI 基礎結構部署)。

產生的憑證必須具有Document Encryption增強的密鑰使用方式 (1.3.6.1.4.1.311.80.1),且Data EnciphermentKey Encipherment或已啟用密鑰使用方式。

警告

私鑰不應該部署到電腦記錄事件。 它應該保留在您解密訊息的安全位置。

解密受保護的事件記錄訊息

下列腳本會擷取和解密事件,假設您有私鑰:

Get-WinEvent Microsoft-Windows-PowerShell/Operational |
    Where-Object Id -eq 4104 |
    Unprotect-CmsMessage

另請參閱