Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerShell中使用Get-Date cmdlet_Date_Powershell_Filtering_Getdate - Fatal编程技术网

在PowerShell中使用Get-Date cmdlet

在PowerShell中使用Get-Date cmdlet,date,powershell,filtering,getdate,Date,Powershell,Filtering,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" 目前,Get Date用于获取

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

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"
目前,Get Date用于获取我在代码行中编写的特定日期的打印机日志。我想改变这一点,但为了得到一个完整的一个星期的打印机日志的时间。我在看TechNet关于Get Date的文章,没有看到任何关于如何指定希望从前一周而不是一天获取结果的内容。我该怎么做


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

您的Where对象只返回大于该日期的记录

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-03-11(日志条目生成日期)<2013-03-18(上限)

您的Where对象只返回大于该日期的记录

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-03-11(日志条目生成日期)<2013-03-18(上限)

在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旧。

在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旧。

我假设这是对您之前帖子的后续

正如我在回答这个问题时所指出的,您应该在源代码处进行过滤-
Get EventLog
,而不是在
Where对象中进行过滤
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"

根据需要将传递的值更改为
-After
-Before

我假设这是您上一篇文章的后续内容

正如我在回答这个问题时所指出的,您应该在源代码处进行过滤-
Get EventLog
,而不是在
Where对象中进行过滤
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"
根据需要更改传递到
-After
-Before
的值