【发布时间】:2015-06-27 21:21:21
【问题描述】:
我拥有一个带有 DateTime 属性的 cmdlet,该属性表示服务器上事件的时间戳。 cmdlet 读取服务器上的日志并输出一些信息。由于在很短的窗口内可能会发生大量事件,因此毫秒精度对于输出用户来说很重要。
但是,当使用 format-list 或 format-table 时,输出仅显示秒数,例如4/15/2015 5:31:30 PM。我更喜欢使用fff time format。
我知道实际数据没有四舍五入,因为如果我查询我的 DateTime 值的毫秒属性,我会看到正确的值。例如,对于给定的输出$event,如果我的日志行有时间戳2015-04-16T00:31:30.525Z,$event.Timestamp.Millisecond 返回 525。
我可以在我的 cmdlet 中做些什么来指定 DateTime 应该以毫秒为单位显示吗?例如,当用户键入:
> Get-LogInfo | ft
我想默认显示:
Timestamp EventData
--------- -------
4/15/2015 17:31:28.525 (data)
我也希望格式列表有类似的行为。理想情况下,该 cmdlet 的用户不需要做任何额外的工作来查看毫秒数。
【问题讨论】:
-
添加一个仅用于显示的属性有什么问题?实际上,DateTime 已经这样做了。同样,我会向事件对象添加扩展脚本属性以进行显示。我所知道的唯一可以改变它们显示方式的其他方法将影响当前会话/进程中的所有 DateTimes(例如,弄乱 DateTimeFormatInfo 的 LongTimeFormat)。
-
@mikez 如果有人将输出通过管道传输到 Format-List,我担心会混淆两个时间属性。我已经有很多属性(比我想要的更多),删除 DateTime 版本对于我的一些用户和消费工具来说将是一个重大变化。我需要支持相当多样化的受众。
-
@Troyen 如果属性太多,请考虑定义默认显示属性集。
标签: datetime powershell cmdlets