2013-03-14 45 views
0

一开始日期cmdlet的我有下面的代码行,将目前得到打印机的事件日志服务器:使用PowerShell中

Get-EventLog -ComputerName ********* -LogName System -Source Print|where-object{$_.timeGenerated -gt (get-date "2013-03-11")}|select-object eventid,timegenerated,message |export-CSV -Path "C:\temp\export.csv" 

目前,获取最新的作品,获得打印机日志具体写在代码行上的那一天。然而,我想要改变这一点,以便一次获得整整一周的打印机日志。我正在查看TechNet关于Get-Date的文章,而且我没有看到任何有关如何设法指定您希望从前一周而不是一天获得结果的任何信息。我该怎么做呢?

编辑:另外,我想找到一种方法,我不必指定具体的日期。例如,我希望能够从本周获取日志,然后在下一周获取新日志,而不必更改代码的日期。

回答

5

我假定这是一个后续到以前的信息,Using WMI to get printer logs

正如我在答复中提到这个问题,您应该被过滤在源 - 在一个代替的 - Get-EventLogWhere-ObjectGet-EventLog为此提供了两个参数 - -Before-After

通过在源处进行过滤,您将通过电线发送更少的数据,这可以显着提高性能。它还会减少远程系统处理您的请求所需的时间。 为什么要求和检索你甚至不看就丢弃的数据?

要获得之间的一个星期前和现在的一切,请执行以下操作:根据需要传递给-After-Before

get-eventlog -computername ******* -logname system -after $((get-date).adddays(-7).date) -before $(get-date) -source Print | select-object eventid,timegenerated,message |export-CSV -Path "C:\temp\export.csv" 

变化的值。

0

您的Where-Object只返回大于该日期的记录。

Where-Object { $_.timeGenerated -gt (get-date "2013-03-11") } 

为了得到一个日期范围尝试

Where-Object { $_.timeGenerated -gt [datetime]'2013-03-11' -and $_.timeGenerated -lt [datetime]'2013-03-18' } 

这基本上是说:(下限)2013年3月11日<(日志条目生成的日期)< 2013年3月18日(上界)

0

在您的where语句中包含另一个测试。像这样:

Get-EventLog -ComputerName ********* -LogName System -Source Print | 
where-object{$_.timeGenerated -gt ([datetime]"2013-03-11") -and $_.timeGenerated -lt ([datetime]"2013-03-18")} | 
select-object eventid,timegenerated,message | 
export-CSV -Path "C:\temp\export.csv" 

它检查事件是否比2013-03-11更新,但比2013-03-18更早。