Windows-Server-2003

列印機監控腳本 (PowerShell)

  • May 3, 2010

我將編寫某種腳本來檢查 Windows Server 2003 中的所有列印作業的事件查看器,然後將它們寫入逗號分隔的文本文件,如列印機名稱_地板_房間.txt

我想知道實時執行此操作的最佳方法是什麼,並不斷檢查事件查看器。我需要注意的任何警告?

謝謝

**編輯:**好的,所以我很可能會使用 PowerShell 並使用 Get-EventLog,然後編輯“表”數據。我遇到的問題:如果我要將所有這些數據保存到一個文本文件中,我如何從中獲取數據?我可以使用逗號分隔的文件,但是我不確定。一旦解決了這個問題,我仍然不確定如何或多或少地實時更新文件。我可以在不佔用所有資源的情況下製作類似服務嗎?例如,每 x 秒執行一次?

**編輯2:**所以我嘗試在我的本地電腦上使用WMI工具(即通過GUI)添加事件過濾器和消費者,試圖讓它正確記錄我的列印作業。看起來我的事件被擷取了,儘管與事件相關聯的腳本有問題。我讓它在周末休息,回到辦公室後,我注意到 wbemess.log 文件中有大量事件,如下所示:

(2010 年 4 月 30 日星期五 16:39:00 2010.112476500):輪詢查詢 select * from Win32_PrintJob 失敗,錯誤程式碼為 80041033。將在下一個輪詢間隔重試

要麼

(Mon May 03 09:25:23 2010.1380562):NT 事件日誌使用者:無法檢索 sid,0x80041002

我還注意到 wmiprvse.exe 的 CPU 使用率出現峰值。Google搜尋了一下,我發現一個人通過將 WMI 重新安裝到系統資料庫中來解決他的問題。我想知道這是否是解決此問題的唯一方法。當我實現這個時,我真的不希望在我們的生產列印伺服器上發生這種情況……

您可能不想嘗試像 unix 管理員那樣通過日誌來嘗試獲取列印機狀態的最新資訊。如果有一種方法可以代替列印機事件獲得通知,那不是很好。好消息是在 Windows 中有。我首先閱讀了這篇文章: 使用 WMI 通知。然後看看Windows PowerShell 2.0 CTP2 WMI 事件監控

我測試了這個簡單的 powershell 腳本:

$query = "Select * From __InstanceCreationEvent within .1 Where TargetInstance ISA 'Win32_printjob'"
$action = write-host "Printed Document status" (gwmi win32_printjob).status ", time" (gwmi win32_printjob).timesubmitted
register-wmievent -query $query -action $action -sourceidentifier "printerwatcher"

當你列印一些東西時,你應該得到一個輸出行

引用自:https://serverfault.com/questions/135382