Senden administrative Befehle an meinen C # Windows-Dienst eigene Powershell-Cmdlets

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

  •  04-07-2019
  •  | 
  •  

Frage

Ich habe eine C # Windows-Anwendung, die einen Dienst ausgeführt wird. Ich mag Powershell nutzen, um für die Verwaltung meines laufenden Dienstes eine Befehlszeile Management-Schnittstelle anbieten zu können.

Aus meiner Sicht, ich versuche, die gleiche Schnittstelle zur Administration a la Exchange 2007 anbieten zu können.

Haben Sie Vorschläge oder Beispielcode, wie die Management-Cmdlets, um zu starten / Design „connect“ zu dem laufenden Dienst abzufragen oder administrative Befehle senden?

Wie kann ich Dienst Zugriff auf internen Laufzeitstatus von Powershell-Befehlszeile? Zum Beispiel würde Ich mag ein Cmdlet namens Get-ConnectionsInfo implementieren, um herauszufinden, wie viele ausgehenden Verbindungen meines Windows-Dienst verwendet, wenn das Cmdlet ausgeführt wird.

Ein praktisches Beispiel oder Web-Link zu einem Beispiel sei mehr als willkommen.

Danke, Robert

War es hilfreich?

Lösung

Der Schlüssel hier ist von writting eine API zu starten, die Sie von .Net zugreifen können, dann können Sie ganz einfach die Anrufe auf diese API in eine DLL wickeln, die Klassen macht die Powershell-Cmdlets sind. Wenn Sie jemand in der Lage sein wollen, um Ihre Service zu verwalten Ferne dann denke ich, wahrscheinlich das Beste, was entweder eine Webservice oder WCF-Dienst zu erstellen ist, das dies tut und dann können Sie das in Powershell wickeln. Wenn Sie einen Blick auf Codeplex haben Sie einige Beispiele für administer Remote-Web-basierte Dienste wie GoGrid und SQL Data Services, die Sie einige Beispiel-Code geben, um Ihnen den Einstieg erleichtern.

Andere Tipps

Eine Lösung wäre für Ihren Windows-Dienst eine administrative Schnittstelle, über WCF zu belichten. Ihre Powershell-Befehle würden diesen WCF-Dienst verwenden, um Informationen zu ziehen und machen den Windows-Dienst Aktionen durchführen.

Eine weitere Möglichkeit, den internen Zustand des Windows-Dienst des Aussetzens in den Sinn kam. Sie könnten Informationen über WMI aussetzen, die von Powershell oder Ihren Powershell-Befehlen verbraucht werden können.

Ich bin mir nicht sicher, ob Sie in der Lage sind, Ihren Dienst zu sagen Aktionen durch WMI ausführen, aber Sie würden zumindest in der Lage Zustand zu ziehen.

Eine dritte Alternative könnte der Windows-Dienst a

scroll top