我有一个脚本可以将一些文件复制到备份存储中。我添加了一个计时器,看看用它做多少时间。我用了
$script:start = Get-Date
$start = (Get-Date)
Copy-Item $var0, $var1, $var2 Folders -force -recurse -verbose -Exclude name
$endFulltime = (Get-Date)
"$(($endFulltime-$startFulltime).totalminutes)"
这个问题是输出。它给了我一些像0,34255234561245分钟的东西,或者如果我把它放在几秒钟内,它看起来一样,但数字不同。所以问题不在于它给我一个错误的输出;它看起来有点乱。
是否有可能获得5分43秒的输出?而不是这个很长的数字。
答案 0 :(得分:3)
使用:
Measure-Command {copy-item $var0, $var1, $var2 Folders -force -recurse -verbose -Exclude name} | select @{n="time";e={$_.Minutes,"Minutes",$_.Seconds,"Seconds",$_.Milliseconds,"Milliseconds" -join " "}}
Measure-Command用于测量命令执行时间。使用带有“Select-Object”的哈希表来自定义输出。
输出在我的实验室中(我使用Get-Process cmdlet进行测试):
time
----
0 Minutes 0 Seconds 16 Milliseconds
也有“持续时间”属性。我将深入研究它是否可以简化事情。
答案 1 :(得分:2)
只需使用分钟和秒> 属性,而不是 TotalMinutes 和 TotalSeconds 。 总计 - 属性是双精度浮点数,为您提供给定时间单位的总时间跨度,而属性仅为单位名称(天,小时,分钟,秒... 。)将该单位的时间跨度组成一个整数。因此,要获得类似“ x 分钟和 y 秒”的输出,请执行以下操作:
$elapsedTime = $endFulltime - $start
"{0} minute(s) and {1} second(s)" -f $elapsedTime.Minutes, $elapsedTime.Seconds
或如果您愿意,请填写第二行:
"$($elapsedTime.Minutes) minute(s) and $($elapsedTime.Seconds) seconds"
答案 2 :(得分:1)
我一直在寻找与OP相同类型的输出。
要获得我想要的东西:
$script:start = get-date
$startFulltime = (Get-Date)
copy-item $var0, $var1, $var2 Folders -force -recurse -verbose -Exclude name
$endFulltime = (Get-Date)
(New-TimeSpan $startFulltime $endFulltime).ToString("hh'h:'mm'm:'ss's'")
结果将类似于:
02h:42m:12s