【问题标题】:Wrong time format returned by get-counter/export-counter in PowershellPowershell 中的 get-counter/export-counter 返回错误的时间格式
【发布时间】:2011-09-19 22:53:55
【问题描述】:

powershell 中的 get-counter/export-counter cmdlet 似乎以美国格式返回日期,这在这种情况下是不可取的。我浏览了两个 get-help -full 页面,但找不到任何可以让我设置日期/时间格式的内容。还有其他我不知道的方法吗,还是我坚持使用美国日期格式?

【问题讨论】:

  • 实际上对我有用:hypftier.de/dump/SO6433025/counters.png。任何地方都没有无脑日期格式,这是香草Get-Counter 输出。
  • 我的最终目的是将计数器导出到外部文件。 get-counter 确实给了我想要的日期格式,但是当导出到 csv 时,它给出了错误的日期格式(如果你用记事本查看 csv 文件)。我应该在我原来的帖子中解释这一点,我的错。
  • 在 PS3.0 预览版 2 中遇到了同样的问题,决定只使用 get-time 到不同的 var 并使用它,虽然很讨厌。

标签: date powershell time format cmdlets


【解决方案1】:

您可以随时重新格式化输出:

get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3 | 
select @{l="Timestamp";e={([datetime]"$($_.timestamp)").tostring("yyyy/MM/dd HH:mm:ss")}},Readings | fl





Timestamp : 2011/06/21 18:33:09
Readings  : \\TMA-1\processor(_total)\% processor time :
            3.87658516403437



Timestamp : 2011/06/21 18:33:11
Readings  : \\TMA-1\processor(_total)\% processor time :
            1.93861060616496



Timestamp : 2011/06/21 18:33:13
Readings  : \\TMA-1\processor(_total)\% processor time :
            3.10139633471207

【讨论】:

    【解决方案2】:

    之所以如此,是因为您的主人的文化是“美国”,看看:

    Get-Culture | Format-List *
    

    您可以在 Scriptblock 执行期间更改文化查看此代码

    [System.Globalization.CultureInfo] $culture = "en-US"
    $a = { [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
           [System.Threading.Thread]::CurrentThread.CurrentUICulture = $culture
           get-counter -Counter "\Processeur(_Total)\% temps processeur" -SampleInterval 2 -MaxSamples 3
         }
    &$a
    
    [System.Globalization.CultureInfo] $culture = "fr-FR"
    $a = { [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
           [System.Threading.Thread]::CurrentThread.CurrentUICulture = $culture
           get-counter -Counter "\Processeur(_Total)\% temps processeur" -SampleInterval 2 -MaxSamples 3
         }
    
    &$a
    

    Powershell-cookbook有很多关于这方面的信息

    【讨论】:

    • 我的文化默认设置为 en-NZ,运行 Get-Date 会返回正确的格式 (dd/MM/yyyy)。您的示例对获取计数器有帮助,但对导出计数器没有帮助。就好像它根本没有文化敏感性一样。这是结果 csv 文件的内容,注意日期是 MM/dd/yyyy 格式,这不是我想要的。这真是令人沮丧。微软怎么会搞砸这个? "(PDH-CSV 4.0) (新西兰标准时间)(-720)","\\hostname\physicaldisk(_total)\disk reads/sec" "06/27/2011 15:03:34.102"," " " 2011 年 6 月 27 日 15:03:36.111","0" "2011 年 6 月 27 日 15:03:38.123","0"
    • 你说得对,那里有问题。我不明白为什么文化适用于 Get-counter 而不是 export-counter。
    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 2015-11-12
    相关资源
    最近更新 更多