Question

J'écris un service Web qui exécute PowerShell Scripts (Active Directory, Directory Management, etc.).

À l'heure actuelle, Runspace L'instance est créée par demande Web. Comme l'initialisation de RunSpace prend du temps, plus je dois souvent importer des modules, comme ActivIrectory, qui sont également des opérations lentes.

Dans cet article de blog Gestion des destinataires d'échange 2007 avec C # , l'instance Runspace est conservée dans un champ statique.

Je erre si je continue à installer une instance Runspace dans un champ statique, serait-ce sûr le fil? Peut-être y a-t-il d'autres inconvénients de le faire de cette façon?

Merci

Était-ce utile?

La solution

Les espaces run ne sont pas en filetage, et ils ne peuvent pas garantir que les scripts qu'ils exécutent sont non plus.

Je vous suggère de créer un runspacepool et de faire travailler votre file d'attente de service Web. C'est en fait assez facile à faire. J'ai blogué à ce sujet pour V2 CTP3, mais l'API n'a pas changé pour RTM.

http://www.nivot.org/2009/01/22/ctp3TherunspacefactoryandPowershellaccelerators.aspx

mettre à jour:

Si vous souhaitez précharger chaque runspace dans la piscine avec un ou plusieurs modules, utilisez la surcharge RunSpaceFactory.CreaterunSpacePool (initialSessionState). Pour voir comment créer et initialiser, voir:

http://www.nivot.org/2010/05/03/powershell20developessentials1Initializingarunspacewithamodule.aspx

Chaque fois que vous créez une instance PowerShell, affectez le pool à sa propriété RunSpacePool.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top