Alles geht einmal zu Ende – die EndTime eines Prozesses bestimmen

Ein Prozess besitzt eine StartTime-Eigenschaft und eine ExitTime-Eigenschaft. Letztere ist aber kein direktes Pendant zu StartTime, denn sie steht nur über den Prozess zur Verfügung, der den Prozess, der beendet wurde und dessen ExitTime gesucht ist, gestartet hat. Das folgende Beispiel startet die drei Prozesse, deren Namen in die Pipeline gelegt wurden, über ein zuvor über New-Object angelegtes Process-Objekt und dessen Start-Methode, so dass beim Beenden der Prozesse über Stop-Process die ExitTime der drei Prozesse über das Array zur Verfügung steht, in das die drei Prozess-Variablen eingefügt wurden:

$ProzListe =@()
„calc“, „calc“, „calc“ | foreach { $P = new-object Diagnostics.Process;$P.StartInfo.FileName=$_;$P.Start();$ProzListe+=$P}
$ProzListe  | Stop-Process

Anschließend steht ExitTime z.B. über $ProzListe[0] usw. zur Verfügung.

Möchte man die „EndTime“ eines Prozesses wissen, der regulär gestartet und gerade über Stop-Process beendet wurde, geht das wie folgt:

get-process calc | stop-process -PassThru | select-object { $_.StartTime.Add((get-date).Subtract($_.StartTime))}

Hier wird einfach nur die Startzeit des Prozesses von der aktuellen Zeit abgezogen. Ein wenig unschön ist lediglich, dass die Spaltenüberschrift so lautet wie der Ausdruck lautet. Doch auch dafür gibt es eine Lösung:

get-process calc | stop-process -PassThru | select-object @{Name=“Endezeit“ ;Expression={$_.StartTime.Add((get-date).Subtract($_.StartTime))}}

Die Lösung besteht darin, dass von der Möglichkeit Gebrauch gemacht wird, eine per Select-Object neu definierte Property mit einem Namen und einem Ausdruck zu versehen.

Oder, wenn die Zeit mit dem f-Operator im Format Stunde:Minute:Sekunde:Millisekunde formatiert werden soll:

get-process calc | stop-process -PassThru | select-object @{Name=“Endezeit“ ;Expression={„{0:hh:mm:ss:fff}“ -f $_.StartTime.Add((get-date).Subtract($_.StartTime))}}

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s