【问题标题】:Using WMI to get printer logs使用 WMI 获取打印机日志
【发布时间】:2013-03-06 03:20:49
【问题描述】:

我正在尝试使用 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,但是我不确定如何过滤和获取我想要获取的相同日志。

【问题讨论】:

    标签: powershell scripting wmi


    【解决方案1】:

    有两种方法可以做到这一点。两者都不使用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。

    【讨论】:

    • 嗨,alroc,有没有一个选项可以在我得到它之后直接将日志转储到 .txt 文件中?我正在使用您自服务器(win 2003)以来编写的第一个选项,我使用它是因为没有 Powershell。
    • 要添加到我的评论中,我尝试添加 | ConvertTo-Csv 在行尾尝试将其输出到某种文件,我可以在其中访问所有日志数据。
    • 我已将Export-CSV 添加到第一个解决方案中。调整路径以满足您的要求。请注意,如果您在 Excel 中打开,多行消息正确显示,但您必须使行更高才能看到。
    猜你喜欢
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多