在Windows Server 2003上使用Where-Object按日期筛选Get-WmiObject

时间:2019-01-14 13:17:41

标签: powershell datetime powershell-v2.0 windows-server-2003

我正在尝试按日期过滤此查询(在$ 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))}

但是最后一个条件是它什么也不做,我认为是因为datetime格式无法被识别。 $ _。TimeGenerated的示例是20181213144843.186997-000

是否存在执行此操作或更改该日期时间格式的任何方式?

1 个答案:

答案 0 :(得分:0)

我通过使用win32com库在Python中制作它来解决了这个问题。然后,我将其添加为此日期格式的过滤器!

time = datetime.today() + timedelta(hours=5, minutes=-10)
timeFormatted = time.strftime("%Y%m%d%H%M%S.000000-000")

系统wmi格式的GTM为0,但是我的电脑是GTM -5,这就是为什么我要增加5个小时。

查询:

query = "Select * from Win32_NTLogEvent where (EventType = 1 or EventType = 2) and TimeGenerated >= " + "\"" + timeFormatted + "\""

2003年是如此有限!

谢谢