我在 PowerShell 中所做的任何事情似乎都需要很长时间。
P> Measure-Command -Expression {Write-Output "hi"}
Days : 0
Hours : 0
Minutes : 0
Seconds : 12
Milliseconds : 513
Ticks : 125130193
TotalDays : 0.000144826612268519
TotalHours : 0.00347583869444444
TotalMinutes : 0.208550321666667
TotalSeconds : 12.5130193
TotalMilliseconds : 12513.0193
Run Code Online (Sandbox Code Playgroud)
我检查了我的 $profile,它是空的。但 PowerShell 确实需要很长时间才能告诉我我的个人资料在哪里:
PS F:\> Measure-Command -Expression {$profile}
Days : 0
Hours : 0
Minutes : 0
Seconds : 12
Milliseconds : 398
Ticks : 123980891
TotalDays : 0.00014349640162037
TotalHours : 0.00344391363888889
TotalMinutes : 0.206634818333333
TotalSeconds : 12.3980891
TotalMilliseconds : 12398.0891
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?我正在使用 PowerShell 5:
PS F:\> get-host | select-object version
Version
-------
5.1.18362.1801
PS F:\>
Run Code Online (Sandbox Code Playgroud)
但这也需要 12 秒来计算:
PS F:\> measure-command { get-host | select-object version }
Days : 0
Hours : 0
Minutes : 0
Seconds : 12
Milliseconds : 442
Ticks : 124426798
TotalDays : 0.000144012497685185
TotalHours : 0.00345629994444444
TotalMinutes : 0.207377996666667
TotalSeconds : 12.4426798
TotalMilliseconds : 12442.6798
Run Code Online (Sandbox Code Playgroud)
我相信这是因为防病毒软件。它可能会在 PowerShell 模块之前加载一些防病毒相关模块。确认这一点的一种方法是在 cmd 中运行以下命令。
powershell.exe -c "Write-Host $PID;Start-Sleep -s 30"
Run Code Online (Sandbox Code Playgroud)
这将打印与 PowerShell 进程关联的 PID 并休眠 30 秒,同时打开另一个 PowerShell 会话并运行
Get-Process | where {$_.Id -eq <PASTE_YOUR_PID>} | select -ExpandProperty modules
Run Code Online (Sandbox Code Playgroud)
这将列出PowerShell 进程已加载的模块。如果您在列表中看到与防病毒相关的 DLL,很可能会导致速度变慢。
| 归档时间: |
|
| 查看次数: |
3065 次 |
| 最近记录: |