【发布时间】:2019-06-08 11:44:10
【问题描述】:
我正在尝试按日期过滤此查询(在 $time 之后获取值)。我没有在 -filter 参数处执行此操作,因为我在 Windows Server 2003 SP2 上遇到错误。
$colLogFiles = Get-WmiObject -Class Win32_NTLogEvent -ComputerName "localhost" | Where-Object {($_.EventType -eq "1") -or (($_.EventType -eq "2") -and ($_.TimeGenerated -gt $time))}
但最后一个条件它没有做任何事情,我认为这是因为日期时间格式无法识别。 $_.TimeGenerated 的一个例子是 20181213144843.186997-000
是否有任何方法可以执行此操作或更改该日期时间格式?
【问题讨论】:
-
尝试用
$_.ConvertToDateTime($_.TimeGenerated)替换$_.TimeGenerated -
使用
Get-WmiObject -Class Win32_NTLogEvent -ComputerName "localhost" | Select-Object -Property timegenerated | gm发现TimeGenerated 属性是String类型。 -
@boxdog 调用“ParseExact”时出现异常:“无法将字符串识别为有效的 DateTime 值。”
-
@lit 它是:
timegenerated NoteProperty string timegenerated=20190114135011.640597-000 -
建议不要打电话给
ParseExact。使用对象本身的特殊ConvertToDateTime方法。 (并确保$time是有效的DateTime,或可转换为它。)请注意,由于字符串的形式为YYYYMMDD,它们确实按字典顺序排列:-gt '20190114',用于例如,即使比较不是作为日期/时间值进行,也会起作用。
标签: powershell datetime powershell-2.0 windows-server-2003