2016-07-22 72 views
2

我正在嘗試使用PowerShell計算設備運行時間。我的代碼是這樣:如何將輸出格式化爲DD,HH,MM

$wmi = Get-WmiObject -Class Win32_OperatingSystem 
$upTime = $wmi.ConvertToDateTime($wmi.LocalDateTime) – $wmi.ConvertToDateTime($wmi.LastBootUpTime) 

當我調用$正常運行時間,它返回如下:

Days    : 0 
Hours    : 1 
Minutes   : 8 
Seconds   : 5 
Milliseconds  : 311 
Ticks    : 40853110010 
TotalDays   : 0.0472836921412037 
TotalHours  : 1.13480861138889 
TotalMinutes  : 68.0885166833333 
TotalSeconds  : 4085.311001 
TotalMilliseconds : 4085311.001 

雖然我能看到的時間,我需要輸出專門格式化爲d: dd,H:hh,M:mm,因爲我會自動將此信息輸入到監控系統中,但經過多次搜索後,google等,我無法看到如何實現此目的。任何人都可以建議如何去做這個?

+0

解釋請向我們展示一個來自你例子的期望輸出的例子。 –

回答

3

嘗試:

"D:{0:dd}, H:{0:hh}, M:{0:mm}" -f $upTime 

另外,如果你想逃避很多東西:

$upTime.ToString('\D\:dd\,\ \H\:hh\,\ \M\:mm') 

這將格式化字符串有2個前導零的時候醚天,小時或秒爲0 。如果他們是1-9,則1領先0。

"D:01, H:02, M:23" 
+0

非常感謝,那正是我所追求的。 :) – Rawns

+0

我做了嘗試,但不得不等待一分鐘,現在接受。 :) – Rawns

+0

我冒昧地大大簡化了你的代碼;也許你不知道格式字符串是如何工作的。 – Joey

-1

您可以在正常的.NET風格格式化

$UptimeStr = $Uptime.ToString("ddd:dd, H:hh, mmm:mm") 

$UptimeStr = '{0:ddd:dd, H:hh, mmm:mm}' -f $Uptime 

如果上面的格式是不是你想要的格式上MSDN

+0

使用「1」參數調用「ToString」的異常:「輸入字符串格式不正確」。你真的必須逃避很多才能完成這項工作(請參閱我編輯Richard的答案)。 – Joey

相關問題