gpt4 book ai didi

powershell - 为什么 Powershell 作业这么慢?

转载 作者:行者123 更新时间:2023-12-04 12:35:22 30 4
gpt4 key购买 nike

当我在本地执行一个简单的语句时

$path = 'C:\Windows\System32\WindowsPowerShell\v1.0'
gci $path

我立即看到了回应。但是当我在本地机器上将它作为作业执行时
$start = get-date
$path = 'C:\Windows\System32\WindowsPowerShell\v1.0'
$cmd = [scriptblock]::Create("gci $path")
$jnr1 = Invoke-Command -computer localhost -ScriptBlock $cmd -asJob
Wait-Job $jnr1
Receive-job $jnr1
$end = Get-date
($end - $start).totalseconds

我必须等待 55 秒。根据我十年前的 unix 经验。我希望后台作业的运行速度几乎与前台作业一样快。

有没有办法加快 PowerShell 后台作业的执行速度?

最佳答案

这个较短的命令做同样的事情:

Measure-Command {Start-Job -Command {gci C:\Windows\System32\WindowsPowerShell\v1.0} | Wait-Job | Receive-Job}

在带有 PSv3 的 Win8 beta 上,它对我来说很快约 3 秒,在带有 PSv2 的 WinXp 上它是约 15-30 秒。

使用 PsV2 引入了后台作业。自 v2 和 PowerShell 现在使用 DLR 以来,他们有时间进行优化。现在在 v3 中,所以这可能解释了性能的差异。

它必须使用命令文本启动另一个 powershell 进程,运行命令,发回序列化结果并拆除进程。

为了找出它在做什么,我在上面的命令运行时运行了 procmon,并且大部分时间 powershell.exe 正在读取网络和 COM 相关的 reg 键。

关于powershell - 为什么 Powershell 作业这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10573737/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com