如何将输出格式化为DD,HH,MM

时间:2016-07-22 08:58:20

标签: powershell

我正在尝试使用PowerShell设置设备。我的代码是这样的:

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

当我调用$ upTime时,它会返回以下内容:

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 ,因为我会自动将其输入监控系统,但是经过多次搜索,谷歌等,我无法看到如何实现这一目标。谁能建议怎么做呢?

2 个答案:

答案 0 :(得分:3)

尝试:

"D:{0:dd}, H:{0:hh}, M:{0:mm}" -f $upTime
或者,如果你想逃避很多事情:

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

当以太天,小时或秒为0时,这将格式化字符串以具有2个前导零。如果它们是1-9,则将1前导零。

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

答案 1 :(得分:-1)

您可以使用普通的.NET样式格式化它

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

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

如果上述格式不符合您的要求,则会在MSDN

上说明格式