關於 Eventlogs
簡短描述
Windows PowerShell 會建立名為 「Windows PowerShell」 的 Windows 事件記錄檔,以記錄 Windows PowerShell 事件。 您可以在 事件檢視器 或使用取得事件的 Cmdlet 來檢視此記錄,例如 Get-EventLog
Cmdlet。 根據預設,Windows PowerShell 引擎和提供者事件都會記錄在事件記錄檔中,但您可以使用事件記錄檔喜好設定變數來自定義事件記錄檔。 例如,您可以新增有關 Windows PowerShell 命令的事件。
完整描述
Windows PowerShell 事件記錄檔會記錄 Windows PowerShell 作業的詳細數據,例如啟動和停止程式引擎,以及啟動和停止 Windows PowerShell 提供者。 您也可以記錄 Windows PowerShell 命令的詳細資料。
Windows PowerShell 事件記錄檔位於 [應用程式和服務記錄] 群組中。 Windows PowerShell 記錄檔是傳統事件記錄檔,不會使用 Windows 事件處理技術。 若要檢視記錄檔,請使用專為傳統事件記錄而設計的 Cmdlet,例如 Get-EventLog
。
檢視 Windows PowerShell 事件記錄檔
您可以在 事件檢視器 或使用 Get-EventLog
和 Get-WmiObject
Cmdlet 來檢視 Windows PowerShell 事件記錄檔。 若要檢視 Windows PowerShell 記錄的內容,請輸入:
Get-EventLog -LogName "Windows PowerShell"
若要檢查事件及其屬性,請使用 Sort-Object
Cmdlet、 Group-Object
Cmdlet 和包含 Format
指令動詞命令的 Cmdlet (Format
cmdlet) 。
例如,若要檢視依事件標識碼分組之記錄檔中的事件,請輸入:
Get-EventLog "Windows PowerShell" | Format-Table -GroupBy EventID
或者,輸入:
Get-EventLog "Windows PowerShell" |
Sort-Object EventID |
Group-Object EventID
若要檢視所有傳統事件記錄檔,請輸入:
Get-EventLog -List
您也可以使用 Cmdlet 來使用 Get-WmiObject
事件相關的 Windows Management Instrumentation (WMI) 類別來檢查事件記錄檔。 例如,若要檢視事件記錄檔的所有屬性,請輸入:
Get-WmiObject Win32_NTEventlogFile |
where LogFileName -EQ "Windows PowerShell" |
Format-List -Property *
若要尋找 Win32 事件相關的 WMI 類別,請輸入:
Get-WmiObject -List | where Name -Like "win32*event*"
如需詳細資訊,請輸入 「Get-Help Get-EventLog」 和 「Get-Help Get-WmiObject」。
選取 Windows PowerShell 事件記錄檔的事件
您可以使用事件記錄檔喜好設定變數來判斷 Windows PowerShell 事件記錄檔中記錄的事件。
有六個事件記錄喜好設定變數;這三個記錄元件的兩個變數:引擎 (Windows PowerShell 程式) 、提供者和命令。 LifeCycleEvent 變數會記錄正常啟動和停止事件。 健全狀況變數會記錄錯誤事件。
下表列出事件記錄喜好設定變數。
變數 | Description |
---|---|
$LogEngineLifeCycleEvent | 記錄 PowerShell 的啟動和停止 |
$LogEngineHealthEvent | 記錄 PowerShell 程式錯誤 |
$LogProviderLifeCycleEvent | 記錄 PowerShell 提供者的啟動和停止 |
$LogProviderHealthEvent | 記錄 PowerShell 提供者錯誤 |
$LogCommandLifeCycleEvent | 記錄命令的開始和完成 |
$LogCommandHealthEvent | 記錄命令錯誤 |
(如需 Windows PowerShell 提供者的相關信息,請參閱 about_Providers.)
根據預設,只會啟用下列事件類型:
- $LogEngineLifeCycleEvent
- $LogEngineHealthEvent
- $LogProviderLifeCycleEvent
- $LogProviderHealthEvent
若要啟用事件類型,請將該事件類型的喜好設定變數設定為$true。 例如,若要啟用命令生命週期事件,請輸入:
$LogCommandLifeCycleEvent
或者,輸入:
$LogCommandLifeCycleEvent = $true
若要停用事件類型,請將該事件類型的喜好設定變數設定為$false。 例如,若要停用命令生命週期事件,請輸入:
$LogProviderLifeCycleEvent = $false
您可以停用任何事件,但指出已啟動 Windows PowerShell 引擎和核心提供者的事件除外。 這些事件會在執行 Windows PowerShell 配置檔之前產生,以及主機程式準備好接受命令之前。
變數設定僅適用於目前的 Windows PowerShell工作階段。 若要將它們套用至所有 Windows PowerShell 工作階段,請將它們新增至您的 Windows PowerShell 配置檔。
記錄模組事件
從 Windows PowerShell 3.0 開始,您可以將模組的 LogPipelineExecutionDetails 屬性和嵌入式管理單元設定為 TRUE,以記錄 Windows PowerShell 模組和嵌入式管理單元中 Cmdlet 和函式的執行事件。 在 Windows PowerShell 2.0 中,此功能僅適用於嵌入式管理單元。
當 LogPipelineExecutionDetails 屬性值為 TRUE ($true
) 時,Windows PowerShell 將會話中的 Cmdlet 和函式執行事件寫入 Windows PowerShell 登入 事件檢視器。 此設定只在目前的會話中有效。
若要在模組中啟用 Cmdlet 和函式的執行事件記錄,請使用下列命令順序。
Import-Module <ModuleName>
$m = Get-Module <ModuleName>
$m.LogPipelineExecutionDetails = $true
若要在嵌入式管理單元中啟用 Cmdlet 的執行事件記錄,請使用下列命令順序。
$m = Get-PSSnapin <SnapInName> [-Registered]
$m.LogPipelineExecutionDetails = $True
若要停用記錄,請使用相同的命令順序,將屬性值設定為 FALSE ($false
) 。
您也可以使用 [開啟模組記錄] 群組原則 設定來啟用和停用模組和嵌入式管理單元記錄。 原則值包含模組和嵌入式管理單元名稱的清單。 支援萬用字元。
針對模組設定 「開啟模組記錄」時,模組的LogPipelineExecutionDetails屬性值在所有會話中都是TRUE,而且無法變更。
[開啟模組記錄] 組策略設定位於下列 群組原則 路徑:
Computer Configuration\
Administrative Templates\
Windows Components\
Windows PowerShell
User Configuration\
Administrative Templates\
Windows Components\
Windows PowerShell
用戶設定原則優先於計算機設定原則,而且這兩個原則都會優先於模組和嵌入式管理單元的LogPipelineExecutionDetails屬性值。
如需此 群組原則 設定的詳細資訊,請參閱 about_Group_Policy_Settings。
安全性和稽核
Windows PowerShell 事件記錄檔的設計目的是要指出活動,並提供疑難解答的作業詳細數據。
不過,就像大部分以 Windows 為基礎的應用程式事件記錄檔一樣,Windows PowerShell 事件記錄檔並非設計為安全。 它不應該用來稽核安全性或記錄機密或專屬資訊。
事件記錄檔的設計目的是要由使用者讀取和瞭解。 用戶可以讀取和寫入記錄檔。 惡意使用者可以在本機或遠端電腦上讀取事件記錄檔、記錄 false 數據,然後防止記錄其活動。
備註
模組作者可以將記錄功能新增至其模組。 如需詳細資訊,請參閱在 MSDN 連結庫中撰寫 Windows PowerShell 模組。