如何为不同时区的服务器生成TimeStamp字符串

时间:2016-01-17 20:52:52

标签: string powershell datetime

我有一个CSV文件中多个服务器的重新启动时间戳列表。我正在寻找一种方法将远程服务器的时间戳(例如在东部时区)转换为太平洋时间。

在我的测试中,我设置了将来的日期[datetime]$a="05-28-16 18:00"

然后将其转换为Dmtf格式,我将如何为远程服务器执行此操作?因为this article指出转换是在本地不是远程执行的。

$b=[System.Management.ManagementDateTimeConverter]::ToDmtfDateTime($a)

最后查找远程服务器的ConvertToDateTime脚本方法。但我认为问题在于它在当地时间被转换和显示。

(gwmi -comp EasternServer101 win32_timezone).ConvertToDateTime($b)
Returns:
Saturday, May 28, 2016 6:00:00 PM

1 个答案:

答案 0 :(得分:1)

我设法让事情有效。

为避免将时间转换为当地时间,我明确指出太平洋标准时间偏移量。这是一种相当手动的方法,但我不确定任何可能有帮助的内置cmdlet。

基本上,找到远程计算机的时区偏移量并从中删除它。然后找到太平洋时间的时区偏移并将其添加到时间。那么无论你和目标机器在哪个时区,结果应该是太平洋时间(不确定PST是否有白天时间?)。

#using your test value for a reboot time...
[DateTime]$a = "05-28-16 18:00"

$RemoteBias = (Get-WmiObject -Class Win32_TimeZone -ComputerName EasternServer101 ).Bias
$PTBias = [System.TimeZoneInfo]::FindSystemTimeZoneById("Pacific Standard Time").BaseUtcOffset.TotalMinutes

$a.AddMinutes(-$RemoteBias).AddMinutes($PTBias)