Pregunta

Estoy escribiendo un servicio web que ejecuta Scripts de PowerShell (Active Directory, Directory Management, etc.).

En este momento, runpace se crea por solicitud web.Como la inicialización de Runspace es una operación de consumo de tiempo, más a menudo tengo que importar módulos, como ActivedIrectory, que también son operaciones lentas.

En este blog Post Administración de destinatarios de Exchange 2007 con C #, la instancia de runspace se mantiene en un campo estático.

Vago. ¿Qué sucede si mantengo la instancia de RunSpace en el campo estático, sería seguro?Tal vez hay otros inconvenientes de hacerlo de esta manera?

gracias

¿Fue útil?

Solución

runspaces no son seguros de hilo, ni pueden garantizar que tampoco sean los scripts que están funcionando.

Le sugeriría que cree un RUNSPACEPOOL y haga que la cola de su servicio web funcione. Esto es realmente bastante fácil de hacer. Lo blogueé por V2 CTP3, pero la API no ha cambiado para RTM.

http://www.nivot.org/2009/01/22/ CTP3THERANSPACEFACTORYANDPOWERSHELLACELERADORES.ASPX

Actualizar:

Si desea precargar cada espacio de ejecución en la piscina con uno o más módulos, use la sobrecarga RUNSPACHACHORY.CREETEATANSPACHORY.CREATEATANSPACEPOOL (INICIALSESSIONSTATESTATE). Para ver cómo crear e inicializar esto, consulte:

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

Cada vez que creas una instancia de PowerShell, asigna la piscina a su propiedad de RuntSPACEPOOL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top