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

Powershell 如何将输出格式化为DD、HH、MM,powershell,Powershell,我正在尝试使用PowerShell计算设备的运行时间。我的代码如下: $wmi = Get-WmiObject -Class Win32_OperatingSystem $upTime = $wmi.ConvertToDateTime($wmi.LocalDateTime) – $wmi.ConvertToDateTime($wmi.LastBootUpTime) 调用$upTime时,它将返回以下内容: Days : 0 Hours : 1

我正在尝试使用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,因为我将自动将其输入监控系统,但在这里、谷歌等进行大量搜索后,我看不到如何实现这一点。有人能建议怎么做吗

试试看:

"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"

您可以使用普通的.NET样式对其进行格式化

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


如果上述格式不是您想要的格式,请在

中解释格式,并向我们展示一个您想要的输出示例。非常感谢,这正是我想要的。:)我确实试过了,但不得不等一分钟,现在我接受了。:)我冒昧地大大简化了你的代码;你可能不知道格式字符串实际上是如何工作的。干杯@Joey我正在寻找一种方法将其合并到一个字符串中。不知道
字符串格式运算符。使用“1”参数调用“ToString”时出现异常:“输入字符串的格式不正确”。要实现这一点,您确实需要逃避很多(请参阅我对Richard答案的编辑)。
$UptimeStr = '{0:ddd:dd, H:hh, mmm:mm}' -f $Uptime