2012-01-05 84 views

回答

13
PS> $ts = New-TimeSpan -Seconds 1234567 
PS> '{0:00}:{1:00}:{2:00}' -f $ts.Hours,$ts.Minutes,$ts.Seconds 
06:56:07 

PS> "$ts" -replace '^\d+?\.' 
06:56:07 
+1

非常感谢你谢伊!最后我做了以下内容: $启动=(获得最新) 写主机 “脚本开始在$开始” 为($ i = 1; $ I -lt 5; $ I ++){ GET-过程|出空 睡眠1 回声“我的剧本要在这里让我数到5给你:$ I” } $结束=(获取最新) $时间跨度=新的入库时间-seconds $(($ $ startpan).totalseconds) $ elapsed ='{0:00} h:{1:00} m:{2:00} s'-f $ timespan.Hours,$ timespan.Minutes,$ timespan。秒 write-host“Time:$ elapsed” – Sune 2012-01-05 19:05:41

+0

(该评论甚至可读吗?) – Sune 2012-01-05 19:05:56

+2

是的,基本上你会得到开始日期和结束日期,并减去另一个表单,结果是一个时间跨度对象,您可以使用-f运算符(例如$ timespan = $ start- $ end;'{0:00}:{1:00}:{2:00}'-f $ ts.Hours,$ ts.Minutes,$ ts.Seconds) 。 – 2012-01-05 21:09:56

7

所有你需要做的就是使用Measure-Command cmdlet来获取时间:

PS > measure-command { sleep 5} 


Days    : 0 
Hours    : 0 
Minutes   : 0 
Seconds   : 5 
Milliseconds  : 13 
Ticks    : 50137481 
TotalDays   : 5.80294918981481E-05 
TotalHours  : 0.00139270780555556 
TotalMinutes  : 0.0835624683333333 
TotalSeconds  : 5.0137481 
TotalMilliseconds : 5013.7481 

以上输出本身可能是配不上你,或者你可以正确格式化它,因为Measure-Command的输出是TimeSpan对象。或者你可以使用ToString

PS > (measure-command { sleep 125}).tostring() 
00:02:05.0017446 
+0

很好的答案。我有这个相同的问题,并且.toString()是现货。对我来说,最好是从测量命令本身解析出每个时间值或转换时间类型。谢谢! – tresstylez 2013-06-21 23:52:50

相关问题