Bas*_*sie 4 vbscript powershell performance login
我正在尝试提高我从VBS转换的PowerShell登录脚本的性能,并且在我的测试中遇到了问题.
我编写了以下测试,试图找到检索连接到当前机器的所有驱动器的最快方法:
################################################################# PSDrive
Measure-Command { Get-PSDrive -PSProvider 'FileSystem' }
$sw = [Diagnostics.Stopwatch]::StartNew()
Get-PSDrive -PSProvider 'FileSystem'
$sw.Stop()
$elapsed = $sw.Elapsed.TotalMilliseconds
write-host $elapsed
############################################################# END PSDrive
##################################################################### WMI
Measure-Command { Get-WMIObject -query "Select * From Win32_LogicalDisk Where DriveType = 4" }
$sw = [Diagnostics.Stopwatch]::StartNew()
Get-WMIObject -query "Select * From Win32_LogicalDisk Where DriveType = 4"
$sw.Stop()
$elapsed = $sw.Elapsed.TotalMilliseconds
write-host $elapsed
################################################################# END WMI
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用两种不同的方法来检索驱动器:
Get-PSDrive
Get-WMIObject
我也使用两种不同的技术来测量每个命令的速度:
Measure-Command
[Diagnostics.Stopwatch]::StartNew()
然而,根据使用哪种方法测量所花费的时间,两种驱动检索技术中的每一种都被测量得更快.这是上面脚本的一些示例输出(我刚刚提供了相关的详细信息):
GET-PSDrive来
测量命令(TotalMilliseconds):0.6983
秒表(TotalMilliseconds):408.9745
GET-WmiObject可以
测量命令(TotalMilliseconds):46.8607
秒表(TotalMilliseconds):158.0209
秒表(TotalMilliseconds):158.0209
所以我的问题是,哪一个(如果有的话)更可靠?或者是试图以这种方式测量我的代码完全浪费时间?非常感谢任何帮助.
更新
修改了将每个命令发送到变量(例如$x = Get-PSDrive -PsProvider 'FileSystem')的代码,现在输出更有意义:
GET-PSDrive来
测量命令(TotalMilliseconds):0.6983
秒表(TotalMilliseconds):408.9745
GET-WmiObject可以
测量命令(TotalMilliseconds):46.8607
秒表(TotalMilliseconds):158.0209
Measure-Command 将丢弃管道输出,仅测量实际执行命令所需的时间.
秒表计时器正在测量执行命令所需的时间,然后将所有输出显示到控制台.
要Measure-Command测量写入控制台所需的时间,请Out-Host在您正在测量的脚本块内添加显式管道.然后,您应该看到写入控制台的输出,以及完成的测量时间的相应增加.
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |