You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中UTC时间转EST时间的实现方法

把PowerShell事件日志UTC时间转换为EST时区的解决方案

没问题,我来帮你搞定这个时区转换的事儿。我们可以直接利用.NET的TimeZoneInfo类来完成UTC到EST的转换,它还能自动处理夏令时(也就是EDT的切换),不用你手动区分。

修改你现有代码里的TimeCreated字段赋值逻辑就行,调整后的完整代码如下:

$Windowsevnts += New-Object -TypeName PSObject -Property @{
    RDGServerName = $env:computername
    UserName      = $event.Properties[0].Value
    IpAddress     = [net.ipaddress]$event.Properties[1].Value
    Resource      = $Event.Properties[3].Value
    # 核心修改:UTC转EST/EDT的逻辑
    TimeCreated   = [TimeZoneInfo]::ConvertTimeFromUtc(
                        $event.TimeCreated.ToUniversalTime(),
                        [TimeZoneInfo]::FindSystemTimeZoneById("Eastern Standard Time")
                    )
    Result        = $eventtype
}

简单解释下关键部分:

  • [TimeZoneInfo]::FindSystemTimeZoneById("Eastern Standard Time"):这行是获取美国东部时区的系统对象,这个ID是Windows内置的标准标识,会自动识别夏令时,当进入夏令时段时会自动切换为EDT。
  • $event.TimeCreated.ToUniversalTime():这一步是保险操作,确保我们的原始时间是UTC格式——哪怕原时间已经是UTC,这个方法也不会出错,避免因为时间格式不明确导致转换失败。
  • [TimeZoneInfo]::ConvertTimeFromUtc():这是实际执行转换的方法,把UTC时间转成目标时区的本地时间。

如果你能确定$event.TimeCreated的Kind属性已经明确标记为Utc,那可以把$event.TimeCreated.ToUniversalTime()简化成$event.TimeCreated,效果完全一致。

内容的提问来源于stack exchange,提问作者user8172425

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:04:58