我试图从Powershell向Nagios输出一个值。我只想要一个干净的数字。对于小数点,对于1000和1000000不是分隔符,并且总是5个小数位,即使它是尾随零也是如此。舍入无CurrencyGroupSeparator
起初,我有这样的:
$DiskStruct.AvgDiskReadQueueValue = '{0:N5}' -f ($AvgObjDiskReadQueueValues.average)
,但是这导致: 2205.06040082681 转换中: 2,205.06040
于是我试着
$DiskStruct.AvgDiskReadQueueValue = [decimal][math]::Round($AvgObjDiskReadQueueValues.average, 5)
但不知何故,这引起了Powershell脚本有时以科学记数法输出。它没有显示尾随零。 结果=>阅读/ s = 2205.0604
那么我能做些什么总是输出5位小数,但不显示任何currencygroupseparator?
(Get-Culture).NumberFormat.CurrencyGroupSeparator
我需要的结果是2205.06040。
抱歉,但这并不适用于我。只是fyi,问题出在这个nagios插件(https://github.com/willemdh/check_ms_win_disk_load)以防somone想测试。 使用您的解决方案时,我得到没有小数 行:驱动器C:平均2样本:{速率(读取:0MB/s)(写入:6229MB/s)} {平均Nr of(读取:0r/s) :397959w/s)} {延迟(阅读:0ms)(写:116334ms)} {队列长度(阅读:0ql)(写:499ql)} | 'Read_Latency'= 0ms 'Write_Latency'= 116334ms'Read_Queue'= 0ql'Write_Queue'= 499ql'Number_of_Reads'= 0r/s'Number_of_Writes'= 397959w/s'Read_Rate'= 0MB/s'Write_Rate'= 6229MB/s – willemdh
什么不工作?我对nagios不熟悉,但'[decimal]('{0:N5}'-f 2205.06040082681)'返回'2205.06040' - 正是你想要的。如果你需要这个值是一个字符串而不是十进制,你可以进一步将它转换为'[string]'。 –
它在脚本中完全删除小数。当在shell中使用时,我得到 [decimal]('{0:N5}'-f 2205.06040082681) 无法将值“2 205,06040”转换为键入“System.Decimal”。错误:“输入字符串格式不正确。” – willemdh