在PowerShell中使用Get-Date cmdlet

Val*_*rok 0 powershell filtering date getdate

我有以下代码行,目前将获取服务器的打印机事件日志:

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"
Run Code Online (Sandbox Code Playgroud)

目前,Get-Date用于获取我在代码行上编写的特定日期的打印机日志.我想改变它,以便一次获得整个星期的打印机日志.我正在查看TechNet关于Get-Date的文章,我没有看到任何关于如何指定您想要从前一周而不是一天中提取结果的内容.我该怎么做呢?

编辑:此外,我想找到一种方法,我没有必要指定具体的日期.例如,我希望能够从本周获取日志,然后在接下来的一周获取新日志,而无需更改代码上的日期.

alr*_*roc 5

我假设这是您之前发布的帖子的后续内容,使用WMI获取打印机日志

正如我在回答这个问题时所指出的那样,你应该在源头过滤Get-EventLog- 而不是在Where-Object.Get-EventLog为此提供了两个参数 - -Before-After.

通过在源过滤,你会发出大量的过线更少的数据,它可以是一个显著的性能提升.它还可以减少远程系统处理您的请求所需的时间.为什么要求和检索您将丢弃的数据,甚至不看?

要在一周前和现在之间获取所有内容,请执行以下操作:

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"
Run Code Online (Sandbox Code Playgroud)

更改传递到价值观-After-Before需要.