2016-07-22 2 views
2

Ich versuche, mit PowerShell eine Geräte-Up-Zeit auszuarbeiten. Mein Code ist wie so:Wie formatiere ich die Ausgabe in DD, HH, MM

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

Als ich $ uptime nennen, es gibt die folgende:

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 

Während ich die HI-Zeit sehen kann, muss ich speziell die Ausgabe D zu formatieren: dd, H: hh, M: mm wie ich werde das automatisch in ein Überwachungssystem füttern, aber nach viel suchen hier, Google etc, kann ich nicht sehen, wie dies zu erreichen. Kann jemand vorschlagen, wie man das macht?

+0

erklärt wollte Bitte zeigen Sie uns ein Beispiel für die gewünschte Ausgabe von Ihnen Beispiel. –

Antwort

3

Versuchen:

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

alternativ, wenn Sie viele Dinge entkommen mag:

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

Dieser String-Format wird zwei führende Nullen zu haben, wenn Äther Tage, Stunden oder Sekunden 0 Und 1 führende Null, wenn sie 1-9 sind.

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

Vielen Dank, genau darum geht es mir. :) – Rawns

+0

Ich habe es versucht, musste aber eine Minute warten, jetzt akzeptiert. :) – Rawns

+0

Ich habe mir die Freiheit genommen, Ihren Code drastisch zu vereinfachen; Sie wussten vielleicht nicht, wie Format-Strings tatsächlich funktionieren. – Joey

-1

Sie können es formatiert werden in normalen .NET Stil

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

oder

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

Wenn die obige Formatierung ist nicht das, was Sie die Formatierung auf MSDN

+0

Ausnahme, die "ToString" mit "1" Argument (en) aufruft: "Eingabezeichenfolge hatte kein korrektes Format." Sie müssen wirklich viel entkommen, um diese Arbeit zu machen (siehe meine Bearbeitungen zu Richards Antwort). – Joey

Verwandte Themen