単純なPowerShellスクリプトの実行に数十秒以上かかるのはなぜですか?
スクリプト全体(test-slow.ps1
)は次のとおりです。
write-host "test"
コマンドプロンプトから次のように呼び出します。
>echo %TIME%
15:07:12.64
>powershell .\test-slow.ps1
test
>echo %TIME%
15:07:26.81
cmdプロンプトからpowershellインスタンスを起動し、そのインスタンス内からこの単純なスクリプトを実行した場合、違いはありません(または、他の何かがまだ間違っているという意味です)。
システム情報:
PS> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 0 10240 16384
>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name: Microsoft Windows 10 Pro
OS Version: 10.0.10240 N/A Build 10240
リモートデスクトップ(ワイヤレスではなく有線接続)経由でマシンにアクセスしていますが、ローカルで同じことを実行します。ローカルLAN上にありますが、インターネットには接続されていません。
1511や1607ではなく1507を使用しているのはなぜですか?
—
ラムハウンド
Process Monitor(technet.microsoft.com/sysinternals/processmonitor.aspx)を実行して、スクリプトを起動します。最初に、相対時間列と期間列を追加し、フィルターをプロセス名にPowershell.exeにします。最初に、イメージの読み込み時間だけに焦点を合わせ、時間が失われた場所を確認します。たとえば、すべてのモジュールをすばやく読み込むことはできますか?時間がかかっているセキュリティソフトウェアがある可能性がありますか?Powershell.exeのフィルターを削除し、0.1を超えるDurationを追加すると役立つ場合があります。いずれにせよ、PMLは時間が失われた場所を示します。それが役に立てば幸い。
—
HelpingHand
echo %time%&powershell .\test-slow.ps1&call echo %^time%
開いているウィンドウから2回実行しcmd
ます。遅延は同じですか?
@Ramhound。これは、他のアプリが依存するベースラインイメージを使用しているためです。1511以降には更新されたPowerShellがありますか?その理論をテストするためにアップデートをインストールしても構いませんが、ボックスはインターネットに接続されていません-OSアップデートをオフラインで適用する方法はありますか?
—
-atreyu
@JosefZ、私はそのコマンドを開いた
—
-atreyu
cmd
ウィンドウから2回実行しましたが、遅延は同じでした(約9-10秒)