一部の IIS 管理コマンドレットは、PowerShell 4.0 で実行が遅くなります
この記事は、powerShell 4.0 で実行されるMicrosoft インターネット インフォメーション サービス (IIS) 管理コマンドレットが遅くなる問題を解決するのに役立ちます。
元の製品バージョン:インターネット インフォメーション サービス、Windows Server 2008 R2、Windows PowerShell 4.0
元の KB 番号: 3144309
現象
次のような状況で問題が発生します。
- IIS Web 管理モジュールを使用して、PowerShell スクリプトを使用して IIS Web アプリケーションを作成および管理しています。
- Windows Server 2008 R2 を実行しています。
- または
ConvertTo-WebApplication
コマンドレットを使用New-WebApplication
しています。
このシナリオでは、PowerShell 4.0 では PowerShell 2.0 よりもスクリプトの実行速度が大幅に遅くなります。 この問題は、Windows Server 2012 以降で同じスクリプトを実行した場合には発生しません。
原因
この問題は、 コマンドレットと ConvertTo-WebApplication
コマンドレットによって大量のコンポーネント オブジェクト モデル (COM) 呼び出しが生成されるためNew-WebApplication
に発生します。 既定では、PowerShell 4.0 は STA スレッド モデルで実行され、PowerShell 2.0 は MTA スレッド モデルで実行されます。
解決方法
可能であれば、Windows Server 2012 以降に移行します。 一部のコマンドレットは、Windows Server 2012環境以降の PowerShell 4.0 ではるかに高速に実行されます。
速度を向上させるには、スイッチを使用して PowerShell を -mta
実行します。
Powershell.exe -mta
または、スイッチを使用して PowerShell を実行します -version 2
。
Powershell.exe -version 2