Windows powershell中检查时区的独立于语言的方法?

Windows powershell中检查时区的独立于语言的方法?,windows,powershell,Windows,Powershell,我正在使用powershell命令测试我们的基础架构: [System.TimeZoneInfo]::Local.Id 返回一个字符串,如 Eastern Standard Time 我们的服务器现在都是英文的,但我敢肯定,如果我在非英文的windows上运行,这个测试会失败 有没有一种方法可以检查时区而不必对照英文字符串进行检查?而不是使用[System.TimeZoneInfo]::Local.Id使用[System.TimeZoneInfo]::Local.BaseUtcOffset,

我正在使用powershell命令测试我们的基础架构:

[System.TimeZoneInfo]::Local.Id
返回一个字符串,如

Eastern Standard Time
我们的服务器现在都是英文的,但我敢肯定,如果我在非英文的windows上运行,这个测试会失败


有没有一种方法可以检查时区而不必对照英文字符串进行检查?

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

编辑


@LotPings是正确的,BaseUtcOffset将不考虑DST,如果您只关心验证时区没有从标准更改,这可能无关紧要,但如果这很重要,您可以改为使用
[System.TimeZoneInfo]::Local.GetUtcOffset($(get date))
将获得当前UTC偏移量。

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

编辑


@LotPings是正确的,BaseUtcOffset将不考虑DST,如果您只关心验证时区没有从标准更改,这可能无关紧要,但如果这很重要,您可以改为使用
[System.TimeZoneInfo]::Local.GetUtcOffset($(get date))
将获取当前UTC偏移量。

AFAIK,
TimeZoneInfo
类的
Id
属性未本地化。至少在我的非英语PC上,所有时区都有英语
Id
.AFAIK,
TimeZoneInfo
类的
Id
属性未本地化。至少在我的非英语PC上,所有时区都有英语
Id
。但此信息不完整,它不会告诉您有关DST的信息,也不会告诉您DST是否现在/在要求的日期生效。您的正确,我仍然认为这是验证时区未更改的最佳方法,但如果需要,我添加了代码以获取当前偏移量,而不是基本偏移量。但此信息不完整,它不会告诉您有关DST的信息,也不会告诉您DST是否现在/在要求的日期生效。您的正确,我仍然认为这是验证时区没有改变的最佳方法,但我添加了代码以获取当前偏移量,而不是基准(如果需要)。