Enviar comandos administrativos a mi servicio de Windows C # usando los propios CmdLets de PowerShell

StackOverflow https://stackoverflow.com/questions/237096

  •  04-07-2019
  •  | 
  •  

Pregunta

Tengo una aplicación de Windows C # que ejecuta un servicio. Me gustaría aprovechar PowerShell para ofrecer una interfaz de administración de línea de comandos para administrar mi servicio en ejecución.

Desde mi punto de vista, estoy tratando de ofrecer la misma interfaz administrativa a la Exchange 2007.

¿Tiene alguna sugerencia o código de muestra sobre cómo iniciar / diseñar los cmdlets de administración en el orden " conectar " ¿Al servicio en ejecución para consultar o enviar comandos administrativos?

¿Cómo puedo acceder al estado de tiempo de ejecución interno del servicio desde la línea de comandos de powershell? Por ejemplo, me gustaría implementar un cmdlet llamado Get-ConnectionsInfo para averiguar cuántas conexiones salientes está utilizando mi servicio de Windows cuando se ejecuta el cmdlet.

Un ejemplo práctico o un enlace web a un ejemplo sería más que bienvenido.

Gracias, Robert

¿Fue útil?

Solución

La clave aquí es comenzar escribiendo una API a la que puede acceder desde .Net, luego puede ajustar fácilmente las llamadas a esta API en una DLL que expone las clases que son cmdlets de PowerShell. Si desea que alguien pueda administrar su servicio de forma remota, creo que probablemente lo mejor sea crear un servicio web o un servicio WCF que haga esto y luego puede envolverlo en PowerShell. Si echa un vistazo a Codeplex, encontrará algunos ejemplos de administración de servicios remotos basados ??en web, como GoGrid y SQL Data Services, que le brindarán algunos ejemplos de código para comenzar.

Otros consejos

Una solución sería que su Servicio de Windows exponga una interfaz administrativa a través de WCF. Sus comandos de PowerShell utilizarían este servicio WCF para extraer información y hacer que el Servicio de Windows realice acciones.

Se me ocurrió otra forma de exponer el estado interno del Servicio de Windows. Puede exponer información a través de WMI que se puede consumir desde PowerShell o sus comandos de PowerShell.

No estoy seguro de si puede decirle a su servicio que realice acciones a través de WMI, pero al menos podría salir del estado.

Una tercera alternativa podría ser que el Servicio de Windows sea un Proveedor de contenido de PowerShell . Sin embargo, nunca he hecho uno, por lo que no estoy seguro de que sean adecuados para alojar un Servicio de Windows, ya que es posible que el servicio no se ejecute todo el tiempo.

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