一部の 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