我在 Windows 7 64 位上运行 PowerShell 3.0 时遇到问题。运行时需要很长时间才能打开/启动。它对几乎所有操作的响应也相当迟缓。
我相信这可能是因为我的个人资料存储在我的文档中,并且我的文档文件夹已同步到我们的网络。
有什么方法可以让我移动我的个人资料的位置,以便我可以将其存储在本地而不是通过网络存储?
答案1
PowerShell 依赖于 .NET 框架,您可以尝试更新它。
这个脚本也提高了我的速度
$Env:PATH = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
$pt = $_.Location
if (! $pt) {continue}
if ($cn++) {''}
$na = Split-Path -Leaf $pt
Write-Host -ForegroundColor Yellow "NGENing $na"
ngen install $pt
}
答案2
上面关于 NGEN 的答案将我的启动时间从 30 多秒缩短到 5 秒以下。
然而,我也看到过这样的情况:等待几秒钟后按下 Ctrl-C 会让我得到一个提示,而且我已经做了上面的 NGEN 技巧,在这种情况下,我怀疑是我的脚本减慢了我的速度。
如果超过 30 秒,并且您已经尝试了上面的 NGEN 技巧,最常见的原因是您的个人和系统配置文件 powershell 脚本需要很长时间才能启动。如果您抱怨延迟时间少于 10 秒,那么可能是 .net 启动速度慢。
如果您在虚拟机上,并且虚拟机主机完全受到限制并受 IO 限制,就像大多数过度配置和资源不足的虚拟机环境一样,那么就是这样。
答案3
Powershell 配置文件可以存储在几个不同的默认位置。
第一个位置是全局位置,当你希望所有用户都有自定义的 Powershell 配置文件时,它会很有用。此配置文件应放置在
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
第二个位置用于本地配置文件,每个用户帐户都独有。此文件将覆盖全局配置文件,应放置在
C:\Username\My Documents\WindowsPowerShell\Profile.ps1
作为测试,尝试修改全局 Powershell 配置文件(位于 system32 中),看看是否可以加快速度。如果可以,您就会知道速度缓慢是由于网络造成的,您可以从那里继续。
答案4
最近,我在开发二进制 PowerShell 模块时遇到了类似的问题。我的控制台对几乎所有内容的响应都非常慢。Steven Penny 的脚本对我来说是有效的,但仅限于每个 PowerShell 实例。我并不真正了解他的脚本中发生了什么;所以我逐行查看我的问题出在哪里。
最终是因为我的路径环境变量。我的路径变量中有 UNC 路径字符串,这导致了延迟,因为 PowerShell 会在每次执行时(即每次按下 Enter 键时)打开/关闭连接。