2016-11-28 21 views
1

我使用PowerShell命令测试我们的基础设施:在PowerShell中检查时区的与语言无关的方法?

[System.TimeZoneInfo]::Local.Id 

它返回像

Eastern Standard Time 

我们的服务器字符串都是英文的权利,但我敢肯定,这个测试会失败如果我在非英语窗口上运行它。

有没有办法检查时区,而不必检查它与英文字符串?

+0

AFAIK,'TimeZoneInfo'类的'Id'属性没有本地化。至少在我的英文电脑上,所有时区都有英文'Id'。 – PetSerAl

回答

4

而不是使用[System.TimeZoneInfo]::Local.Id使用[System.Timezoneinfo]::Local.BaseUtcOffset它将根据UTC时间与您正在使用的服务器的时区之间的小时数差异给出结果。

编辑

@LotPings是正确的,因为BaseUtcOffset不会考虑DST,如果你只关注验证时区尚未从标准改变这可能并不重要,但如果它是很重要的,你可以改为使用[System.TimeZoneInfo]::Local.GetUtcOffset($(get-date)),它将为您提供当前的UTC偏移量。

+0

但是这个信息并不完整,它没有告诉你关于DST的信息,以及如果DST现在/在问日期时有效。 – LotPings

+0

您的正确,我仍然认为这是最好的方法来使用这里来验证时区没有改变,但我已经添加了代码来获得当前的偏移量,而不是基地,如果需要的话。 –

相关问题