Senden Sie administrative Befehle an meinen C # Windows Service mit eigenen PowerShell CmdLets

9

Ich habe eine C # Windows-Anwendung, die einen Dienst ausführt. Ich möchte PowerShell nutzen, um eine Befehlszeilen-Verwaltungsschnittstelle für die Verwaltung meines laufenden Dienstes anzubieten.

Aus meiner Sicht versuche ich, dieselbe Administrationsoberfläche wie Exchange 2007 anzubieten.

Haben Sie Vorschläge oder einen Beispielcode zum Starten / Entwerfen der Verwaltungs-Cmdlets, um eine Verbindung mit dem ausgeführten Dienst herzustellen, um Verwaltungsbefehle abzufragen oder zu senden?

Wie kann ich über die Powershell-Befehlszeile auf den internen Laufzeitstatus des Service zugreifen? Ich möchte beispielsweise ein Cmdlet namens Get-ConnectionsInfo implementieren, um herauszufinden, wie viele ausgehende Verbindungen mein Windows-Dienst beim Ausführen des Cmdlets verwendet.

Ein praktisches Beispiel oder ein Weblink zu einem Beispiel wäre mehr als willkommen.

Danke, Robert

    
Robert Mircea 25.10.2008, 22:09
quelle

4 Antworten

1

Der Schlüssel hier besteht darin, mit dem Schreiben einer API zu beginnen, auf die Sie von .Net zugreifen können. Anschließend können Sie die Aufrufe dieser API problemlos in eine DLL umwandeln, die Klassen mit PowerShell-Cmdlets verfügbar macht. Wenn Sie möchten, dass jemand Ihren Dienst remote verwalten kann, ist es wahrscheinlich das Beste, entweder einen Webservice oder einen WCF-Dienst zu erstellen, der dies erledigt, und Sie können das dann in PowerShell umbrechen. Wenn Sie einen Blick auf Codeplex werfen, finden Sie einige Beispiele für die Verwaltung von Remote-Web-basierten Diensten wie GoGrid und SQL Data Services, die Ihnen einige Beispielcode für den Einstieg geben.

    
Darren Gosbell 03.11.2008, 03:45
quelle
2

Eine Lösung wäre, dass Ihr Windows-Dienst eine Verwaltungsschnittstelle über WCF bereitstellt. Ihre PowerShell-Befehle verwenden diesen WCF-Dienst, um Informationen abzurufen und den Windows-Dienst Aktionen ausführen zu lassen.

    
Magnus Lindhe 26.10.2008 09:25
quelle
0

Eine andere Möglichkeit, den internen Status des Windows-Diensts anzuzeigen, kam mir in den Sinn. Sie können Informationen über WMI bereitstellen, die von PowerShell oder Ihren PowerShell-Befehlen verwendet werden können.

Ich bin mir nicht sicher, ob Sie in der Lage sind, Ihrem Dienst zu sagen, dass er Aktionen über WMI ausführen soll, aber Sie könnten zumindest den Status herausziehen.

    
Magnus Lindhe 26.10.2008 11:08
quelle

Tags und Links