2013-03-14 51 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更早。