微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell-多个Get-Date调用返回不同的时间格式/区域性

如何解决PowerShell-多个Get-Date调用返回不同的时间格式/区域性

我目前正在研究Powershell脚本,在这里我需要测量脚本执行开始和结束之间的持续时间。经过一段时间的搜索,我决定使用这种方法https://stackoverflow.com/a/61432373/11425760 我有一个Get-Date调用获取脚本执行开始时的开始时间,而有另一个Get-Date调用恰好在脚本执行即将结束之前:

$startTime = Get-Date

# Script logic...

$EndTime = Get-Date
$Duration = New-TimeSpan -Start $startTime -End $EndTime

$Day = switch ($Duration.Days)
{
    0 { $null; break }
    1 { "{0} day," -f $Duration.Days; break }
    Default {"{0} days," -f $Duration.Days}
}

$Hour = switch ($Duration.Hours)
{
    #0 { $null; break }
    1 { "{0} hour," -f $Duration.Hours; break }
    Default { "{0} hours," -f $Duration.Hours }
}

$Minute = switch ($Duration.Minutes)
{
    #0 { $null; break }
    1 { "{0} minute," -f $Duration.Minutes; break }
    Default { "{0} minutes," -f $Duration.Minutes }
}

$Second = switch ($Duration.Seconds)
{
    #0 { $null; break }
    1 { "{0} second" -f $Duration.Seconds; break }
    Default { "{0} seconds" -f $Duration.Seconds }
}

Write-Host "The script execution took: $Day $Hour $Minute $Second"
Write-Host "Script execution ended"

虽然在实现该方法时似乎可以正常工作,但是我突然开始遇到一个问题,由于某种原因,我在调用New-TimeSpan时收到“ ParameterBindingException”,并告诉我“ End”参数的值(例如“ 08/19/2020 08:54:51”)无法转换为System.DateTime类型。当我查看提供的开始时间和结束时间时,尽管它们均来自Get-Date调用,但它们都以不同的格式打印。例如,end time被打印为

"08/19/2020 08:54:51"

start time

"Mittwoch,19. August 2020 08:54:08"

(德语格式)。这似乎仅在我第一次运行脚本时发生,因为一旦再次运行该脚本,该错误将不再发生。我不明白的是:在检查了开始时间和结束时间之后,开始时间是(按预期)DateTime对象,但是结束时间只是一个字符串,尽管这两个值都来自Get-Date调用。为什么甚至会一开始就出现这种情况?如何避免遇到此问题(或类似问题)?

解决方法

我建议放弃该方法,而改用StopWatch。

只需在执行开始时创建并启动一个秒表,最后将其停止即可,您就有时间查看对象了。

$stopwatch =  [system.diagnostics.stopwatch]::StartNew()

$stopwatch.Stop()

$stopwatch

这将输出:

IsRunning经过的经过的毫秒数的经过的提示


False 00:00:00.0009000                   0         9000

或者您可以得到这个:

$stopwatch.Elapsed





Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 1
Ticks             : 16324
TotalDays         : 1,88935185185185E-08
TotalHours        : 4,53444444444444E-07
TotalMinutes      : 2,72066666666667E-05
TotalSeconds      : 0,0016324
TotalMilliseconds : 1,6324

但是您也可以按照需要的任何方式对其进行格式化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。