2016-07-22 32 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

相关问题