PowerShell秒表有问题吗,因为我不能让它准确地计时执行

rjee0c15  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(99)

我有一个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

我不确定我是否在这里遗漏了什么,因为我的日志记录不正确,使得故障排除变得困难。

cczfrluj

cczfrluj1#

为什么不使用Get-Date呢?

$StartTime = Get-Date

$Now = Get-Date

$Timer = $Now - $StartTime

$Timer.TotalSeconds

但无论如何,TotalSeconds都是您所需要的。

相关问题