2013-03-04 118 views
1

我試圖使用WMI從幾臺服務器獲取打印機系統日誌。一個星期前,我做了下面的代碼由於某種原因只能時而:使用WMI獲取打印機日誌

wmic /node:<servername> NTEvent WHERE "logfile='System' AND SourceName='Print' AND TimeGenerated > '20130219'" get EventCode,TimeGenerated,Message 

這行代碼有時會工作,但大部分時間裏,我發現了以下錯誤,每當我試着運行它得到日誌:

ERROR: 
Code = 0x80020009 
Description = Exception occurred. 
Facility = Dispatch 

我想知道是否有人會知道這是爲什麼發生,如果有會是一個更好的方法來重寫我的代碼。我曾考慮過使用get-wmiobject cmdlet,但我不確定如何篩選並獲取我試圖獲取的相同日誌。

回答

0

有兩種方法可以做到這一點。兩者都不使用Get-WMIObject

選項1:獲取整個事件日誌,然後過濾。

Get-EventLog -LogName System -Source Print|where-object{$_.timeGenerated -gt (get-date "2013-02-19")}|select-object eventid, timegenerated,message | Export-csv -path r:\log.csv -notypeinfo; 

選項2:過濾器在源

Get-WinEvent -FilterHashtable @{logname='system';source='print';StartTime=(get-date "2013-02-19").date;}|select-object id,timecreated,message; 

最佳做法是過濾儘可能靠近數據源儘可能(Filter Left, Format Right),這將是在這種情況下選擇2。

+0

嗨alroc,是否有一個選項可以將日誌直接轉儲到.txt文件後,我已經得到它?我使用的是自從我使用這個服務器的服務器(win 2003)之後所寫的第一個選項沒有Powershell。 – Valrok 2013-03-05 18:34:46

+0

要添加到我的評論,我試過添加| ConvertTo-Csv在行末,嘗試將它輸出到某種文件,我可以訪問所有日誌數據。 – Valrok 2013-03-05 18:40:04

+0

我已經將'Export-CSV'添加到第一個解決方案。調整路徑以符合您的要求。請注意,如果您在Excel中打開,多行消息*將*正確顯示,但您必須使行更高才能看到。 – alroc 2013-03-05 19:21:46