Envoyer des commandes administratives à mon service Windows C # à l'aide de vos propres CmdLets PowerShell

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

  •  04-07-2019
  •  | 
  •  

Question

J'ai une application Windows C # qui exécute un service. Je souhaite utiliser PowerShell pour offrir une interface de gestion de ligne de commande permettant d’administrer mon service en cours d’exécution.

De mon point de vue, j'essaie de proposer la même interface administrative à la Exchange 2007.

Avez-vous des suggestions ou un exemple de code sur la manière de démarrer / concevoir les applets de commande de gestion dans l'ordre "connect ""? au service en cours pour interroger ou envoyer des commandes administratives?

Comment puis-je accéder à l'état d'exécution interne du service à partir de la ligne de commande powershell? Par exemple, j'aimerais implémenter une cmdlet appelée Get-ConnectionsInfo pour savoir combien de connexions sortantes mon service Windows utilise lors de l'exécution de la cmdlet.

Un exemple pratique ou un lien Web vers un exemple serait plus que bienvenu.

Merci, Robert

Était-ce utile?

La solution

La clé ici est de commencer par écrire une API à laquelle vous pouvez accéder à partir de .Net, puis vous pouvez facilement envelopper les appels de cette API dans une DLL qui expose les classes qui sont des applets de commande PowerShell. Si vous souhaitez que quelqu'un puisse administrer votre service à distance, je pense que la meilleure chose à faire est probablement de créer un service Web ou un service WCF qui le fait, puis vous pouvez l'envelopper dans PowerShell. Si vous jetez un coup d’œil à codeplex, vous trouverez des exemples d’administration de services Web distants tels que GoGrid et SQL Data Services, qui vous donneront un exemple de code pour vous aider à démarrer.

Autres conseils

Une solution serait que votre service Windows expose une interface administrative via WCF. Vos commandes PowerShell utiliseraient ce service WCF pour extraire des informations et obliger le service Windows à effectuer des actions.

Une autre façon d’exposer l’état interne du service Windows est venue à l’esprit. Vous pouvez exposer des informations via WMI pouvant être utilisées à partir de PowerShell ou de vos commandes PowerShell.

Je ne suis pas sûr que vous puissiez demander à votre service d'effectuer des actions via WMI, mais vous seriez au moins en mesure de vous retirer de l'état.

Une troisième solution pourrait consister à définir le service Windows comme un Fournisseur de contenu PowerShell . Cependant, je n'en ai jamais créé moi-même et je ne suis donc pas sûr qu'ils conviennent à l'hébergement dans un service Windows, ce dernier pouvant ne pas fonctionner tout le temps.

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