web-dev-qa-db-ja.com

開く/応答するのに非常に遅いPowershell

Windows 7 64ビットでPowerShell 3.0を実行する際に問題が発生しました。実行時に開く/開始するのに非常に長い時間がかかります。また、ほとんど何にでも対応するためにかなり遅いです。

これは、プロファイルがドキュメントに保存されており、ドキュメントフォルダーがネットワークに同期されているためと考えられます。

ネットワーク経由ではなくローカルで使用できるように、プロファイルの場所を移動する方法はありますか?

11
czuroski

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
}
17
Steven Penny

NGENに関する上記の回答により、起動時間が30秒以上から5秒未満に短縮されました。

ただし、数秒待ってからCtrl-Cを押すとプロンプトが表示される場合もあり、すでに上記のNGENのトリックを行っていました。その場合、スクリプトが原因で速度が低下していると思われます。

30秒以上経過していて、上記のNGENのトリックを既に試した場合、最も一般的な理由は、個人用およびシステムプロファイルのpowershellスクリプトの起動に時間がかかることです。 10秒未満の遅延について不平を言っている場合、それはおそらく開始が遅い.netです。

VMを使用していて、VMホストが完全に占有され、IOにバインドされている場合、プロビジョニングが多くリソース不足のVM環境がそうです。それは。

1
Warren P

最近、バイナリPowerShellモジュールの開発時に同様の問題が発生しました。私のコンソールはほとんど何にでも応答するのが非常に遅かった。 Steven Pennyのスクリプトは私にとってはうまくいきましたが、PowerShellのインスタンスごとにのみです。私は彼のスクリプトで何が起こっているのか本当に理解していませんでした。だから私は私の問題がどこにあるかを確認するために行ごとに行きました。

それは私のパス環境変数になってしまいました。パス変数にUNCパス文字列があり、PowerShellが実行ごとに(つまり、Enterキーを押すたびに)接続を開いたり閉じたりするため、遅延が発生しました。

0
Aaron Ray

Powershellプロファイルを保存できるデフォルトの場所はいくつかあります。

  • 最初の場所はグローバルな場所であり、すべてのユーザーにカスタマイズされたPowershellプロファイルを持たせたい場合に便利です。このプロファイルは

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
    
  • 2番目の場所はローカルプロファイル用で、各ユーザーアカウントに固有です。このファイルはグローバル構成ファイルを上書きするため、次の場所に配置する必要があります

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

テストとして、(システム32にある)グローバルPowershellプロファイルを変更して、速度が向上するかどうかを確認します。もしそうなら、ネットワークが原因で速度がどういうわけかわかり、そこから先に進むことができます。

0
jmreicha