【发布时间】:2019-01-12 00:07:54
【问题描述】:
我正在为一个问题苦苦挣扎,希望您能帮助我。
我正在使用get-winevent 从计算机中获取特定事件并将结果导出到 csv。
我正在设置一个变量来保存所有返回的事件,然后使用 foreach 循环遍历所有事件并将它们导出到 csv 文件。 当我导出 timecreated 对象时,数据被格式化为日期时间,我可以对最旧到最新或从最新到最旧进行排序。我遇到的是“timecreated”的默认格式是“MM/DD/YYYY hh:mm”。这会导致一个问题,除非我能看到秒和毫秒,否则很多这些事件似乎是同时发生的。
为了解决这个问题,我一直在使用以下格式来格式化日期:
$ticks = [datetime]$event.timecreated.Ticks
$date = $ticks.Tostring("MM/dd/yyyy hh:mm:ss:fff")
当我刚刚输出到屏幕时,这很好用,日期显示完全符合我的要求。但是,由于变量是字符串,所以当我将变量导出到excel时,我无法按时间排序。
有谁知道将刻度转换为我想要的显示格式的方法,但将其保留为日期时间而不是字符串?或者以任何方式获取 timecreated 对象并按照我想要的方式对其进行格式化,而无需将其转换为字符串?
我开始认为我可能必须创建一个 PSObject 并以这种方式处理它,但我不确定我是否能做到。
感谢阅读。
【问题讨论】:
-
尝试将字符串放入excel,并将excel中的类型设置为日期。
-
谢谢,我试过了,还是不行。
-
首先,它应该是
ss.fff而不是ss:fff。不过,老实说,这还不够,因为您没有 AM/PM 指示,并且已将时间转换为 12 小时标准,并排除了 AM/PM。您应该使用HH而不是hh或在末尾添加tt以显示 AM/PM。如果这在 Excel 中不起作用,您如何将变量导出到 Excel?如果你想要一个可排序的日期/时间字符串,你应该使用'yyyy/MM/dd HH:mm:ss.fff'。 -
如果你想把数据存入Excel,那就另存为excel。使用这个模块,很棒:powershellgallery.com/packages/ImportExcel/5.4.0我测试了导出wineevents:日期以正确的方式导出,包括毫秒。
-
感谢您的回复。 Madtechnician,我不知道小时面具的重要性。我不知道大写表示24小时制,所以我会做相应的调整。我还将把“:”改成“.”。 Gert,我将检查您链接到的模块。看起来很有趣。
标签: powershell date datetime