2016-04-01 196 views
1

當運行下面的一個班輪:寫事件日誌錯誤

Write-EventLog -LogName Application -Source 'Application Error' -EntryType Error -EventID 1001 -Message 'Problem description' 

我們看到了日誌Application在入門:

enter image description here

根據Microsoft的事件ID 1001,應該提供%1,%2和%3的值:

檢測產品'% 1',功能'%2'在請求期間失敗 組件'%3'

在PowerShell中這怎麼可能?當添加交換機-RawData 10, 20只有類型如下填寫:

enter image description here

有沒有辦法來沒有可用而不在事件日誌新日誌名稱或源的其他文本?或者要能夠填寫變量?如果自定義日誌名稱或來源不可用,我正在寫入Application error。所以有跡可尋。

謝謝你的幫助。

+0

來自MSI的事件ID 1001和來自應用程序錯誤或Windows錯誤報告的事件ID 1001不是同一個事件 - 源很重要。將其更改爲'MsiInstaller',您將看到 –

+0

謝謝Mathias我現在明白了。哪個來源始終可用,並且最適合報告自定義錯誤?當隨機選擇另一個數字以避免額外的模糊時,它總是抱怨'無法找到事件ID xxx的描述...' – DarkLite1

回答

1

您鏈接到的事件ID 1001說明特定於MsiInstaller源。

對於您自己的自定義錯誤事件,請使用自定義源標識符。您可以查看源定義是否已經在機器上存在,如果沒有,創建它:

$CustomSource = 'MyCustomApplication' 

# Wrap check i try/false to catch SourceExists() throwing access denied on failure 
$SourceExists = try { 
    [System.Diagnostics.EventLog]::SourceExists($CustomSource) 
} catch { 
    $false 
} 

if(-not $SourceExists) 
{ 
    # Create the Source definition 
    New-EventLog -Source $CustomSource -LogName Application 
} 

Write-EventLog -LogName Application -Source $CustomSource -EntryType Error -EventID 1001 -Message 'Problem description' 

如果你有一個消息資源文件(包含您的活動中的「模板」文件),你也可以包括在調用New-EventLog

+0

感謝Mathias,我已經通過SCCM和System帳戶進行了此操作。但後來,當我使用用戶帳戶運行腳本時,如果未使用系統帳戶正確創建自定義源,它應該會失敗。在這種情況下,我希望用戶寫一條消息到事件日誌。用戶不能使用自定義日誌,但應該使用已有的東西...希望這可以讓它更清晰? – DarkLite1

+0

@ DarkLite1爲什麼它使用「已經可用」的東西如此重要?只要您選擇的源名稱與SCCM應創建的不同,您仍然可以輕鬆區分它們。你想達到什麼目的? –

+0

我試圖在'應用程序'日誌中獲得一個乾淨的錯誤消息,沒有像'事件ID描述未知'或其他文本'錯誤桶'那樣的額外東西。爲什麼?因爲目前還沒有可用的自定義日誌(用戶無法創建),並且需要去某處... – DarkLite1