質問

PowerShellスクリプトを実行するWebサービス(Active Directory、ディレクトリ管理など)を実行しています。

今、 runspace インスタンスは、Web要求ごとに作成されます。RunSpaceの初期化は時間がかかる動作であるため、ActiveDirectoryのようなモジュールをインポートする必要があります。これも遅い操作です。

このブログの投稿 C#を持つExchange 2007の受信者の管理、ランスペースインスタンスは静的フィールドに保持されます。

私は静的フィールドにRunSpaceインスタンスを保持している場合はどうしたのかを変えます。このようにしてそれをすることの欠点があるかもしれませんか?

ありがとう

役に立ちましたか?

解決

RunSpacesはスレッドセーフではなく、実行中のスクリプトがどちらでもあることも保証できません。

RunSpacePoolを作成してWebサービスキューを作成していることをお勧めします。これは実際にはやるのはとても簡単です。私はV2 CTP3のためにそれをブログしましたが、APIはRTMのために変更されていません。

> http://www.nivot.org/2009/01/22/ CTHP3TherUnSpaceFactoryAndPowerShellAccelerators.aspx

更新:

プール内の各ランスペースを1つ以上のモジュールでプリロードする場合は、RunSpaceFactory.CreaterUnSpacePool(InitialSessionState)の過負荷を使用してください。これを作成し初期化する方法を確認するには、を参照してください。

href="http://www.nivot.org/2010/05/03/03/05/05/03/03/03/05/03/03/05/05/03/03/05/03/jp http://www.nivot.org/2010/05/03/ PowerShell20DeveloperESSENTINGS1InitializizeArunSpaceWithAmodule.aspx

PowerShellインスタンスを作成するたびに、プールをRunSpacePoolプロパティに割り当てます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top