我有一个PowerShell脚本,它运行数千个登录到数据库的命令,我还做的是将开始时间和结束时间记录到数据库中,我注意到的一个异常情况是,使用PowerShell中的秒表功能会给我不准确的计时。
这就是我在脚本中使用秒表的方式。
$stopwatch = [System.Diagnostics.Stopwatch]::new()
# <a whole series of loops/code etc>
# when I need to log duration of a particular section
if ($stopwatch.IsRunning -eq $true) {$stopwatch.Restart()} else {$stopwatch.Start()}
# code here
invoke-sqlcmd -serverinstance x -database y -query "insert into log_table values $($stopwatch.Elapsed.Seconds) "
令人惊讶的是,当我查看数据库日志时,持续时间没有任何意义。
在一个例子中,根据table上记录的内容。start_time: 2022-11-01- 06:36:41.000
end_time: 2022-11-01.000
PowerShell脚本计算的持续时间为12秒,但是,查看上面的时间跨度可以清楚地看到它超过了60秒。
PowerShell版本详细信息如下。
Name Value
---- -----
PSVersion 5.1.19041.1682
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1682
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
我不确定我是否在这里遗漏了什么,因为我的日志记录不正确,使得故障排除变得困难。
1条答案
按热度按时间cczfrluj1#
为什么不使用Get-Date呢?
但无论如何,
TotalSeconds
都是您所需要的。