Powershell打开/响应非常慢


12

我在Windows 7 64位上运行PowerShell 3.0时遇到问题。运行它需要很长时间才能打开/启动。对于几乎所有的响应,它也相当缓慢。

我相信这可能是由于我的个人资料存储在我的文档中,而我的文档文件夹已同步到我们的网络。

有什么方法可以移动我的个人资料的位置,以便可以将其保存在本地而不是通过网络?


1
这对我来说也很慢,我的个人资料位于直接驱动器访问权限上。它也只读取一次,由OS缓存并在启动后关闭,因此它对网络的影响不大。这只是MS重做轮子的不良尝试,但仍然是正方形。
v.oddou

Answers:


17

PowerShell依赖于 .NET Framework,您可以尝试对其进行更新。

这个脚本也帮助我提高了速度

$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
}

1
谢谢!运行此脚本后,有很大的不同。
WeSam Abdallah 2015年

3
它有什么作用?
Pureferret

2
ngen.exe安装:Generate native images for an assembly and its dependencies and install them in the Native Images Cache. If /queue is specified compilation job is queued up. If a priority is not specified, the default priority used is 3.
VertigoRay

我……感到惊讶和印象深刻:-)
克里斯·卡罗尔

1

上面关于NGEN的答案使我的启动时间从30秒钟以上减少到5秒钟以下。

但是,我也看到过这样的情况,在等待几秒钟后按Ctrl-C会提示我,并且我已经完成了上面的NGEN技巧,在那种情况下,我怀疑是我的脚本使我减速。

如果超过30秒,并且您已经尝试了上述NGEN技巧,则最常见的原因是您的个人和系统配置文件Powershell脚本需要很长时间才能启动。如果您抱怨延迟少于10秒,则可能是.net启动缓慢。

如果您使用的是虚拟机,并且像大多数过度配置和资源不足的虚拟机环境一样,虚拟机主机完全处于受限状态且受到IO限制,那就就是这样。


0

Powershell配置文件可以存储几个不同的默认位置。

  • 第一个位置是全局位置,当您希望所有用户都具有自定义的Powershell配置文件时将很有用。此配置文件应放置在

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
    
  • 第二个位置用于本地配置文件,并且特定于每个用户帐户。该文件将覆盖全局配置文件,应放置在

    C:\Username\My Documents\WindowsPowerShell\Profile.ps1
    

作为测试,请尝试修改全局Powershell配置文件(位于system32中),看看是否可以加快速度。如果是这样,您会知道网络速度慢是由于某种原因,您可以从那里继续前进。


0

最近,在开发二进制PowerShell模块时遇到了类似的问题。我的控制台对几乎所有内容的响应都非常慢。史蒂文·潘尼(Steven Penny)的脚本对我有用,但仅适用于PowerShell的每个实例。我不太了解他的剧本里发生了什么。所以我逐行去看看我的问题在哪里。

最终是我的路径环境变量。我在我的path变量中有UNC路径字符串,并且造成了延迟,因为PowerShell将为每次执行打开/关闭连接(即,每次按Enter键)。


2
什么是UNC?你怎么修好它的?
托马什Zato -恢复莫妮卡

1
@TomášZato-通用命名约定(UNC)是包含正斜杠或反斜杠的路径。我知道此评论晚了4年,您想知道,因为没人愿意回答您的问题。 我假设作者从其系统变量中删除了UNC路径。
拉姆猎犬,

@Ramhound谢谢!
托马什Zato -恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.