我試圖從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