Отправлять административные команды моей C # Windows Service, используя собственные PowerShell CmdLets - PullRequest
9 голосов
/ 26 октября 2008

У меня есть приложение на C # для Windows, которое запускает службу. Я хотел бы использовать PowerShell, чтобы предложить интерфейс управления командной строкой для администрирования моей работающей службы.

С моей точки зрения, я пытаюсь предложить тот же административный интерфейс, что и в Exchange 2007.

Есть ли у вас какие-либо предложения или примеры кода о том, как запустить / спроектировать командлеты управления, чтобы "подключаться" к работающей службе для запроса или отправки административных команд?

Как получить доступ к внутреннему состоянию среды выполнения службы из командной строки powershell? Например, я хотел бы реализовать командлет Get-ConnectionsInfo, чтобы узнать, сколько исходящих подключений использует моя служба Windows при выполнении командлета.

Практический пример или веб-ссылка на пример более чем приветствуются.

Спасибо, Роберт

Ответы [ 4 ]

2 голосов
/ 26 октября 2008

Решение для вашей службы Windows - предоставить административный интерфейс через WCF. Команды PowerShell будут использовать эту службу WCF для извлечения информации и заставить службу Windows выполнять действия.

1 голос
/ 03 ноября 2008

Ключевым моментом здесь является начало написания API, к которому вы можете получить доступ из .Net, затем вы можете легко обернуть вызовы этого API в DLL, которая предоставляет классы, являющиеся командлетами PowerShell. Если вы хотите, чтобы кто-то мог администрировать вашу службу удаленно, я думаю, что, вероятно, лучше всего создать веб-сервис или службу WCF, которая сделает это, и затем вы можете обернуть это в PowerShell. Если вы посмотрите на codeplex, вы найдете несколько примеров администрирования удаленных веб-сервисов, таких как GoGrid и SQL Data Services, которые предоставят вам некоторый пример кода для начала работы.

0 голосов
/ 26 октября 2008

Третий вариант - сделать службу Windows поставщиком содержимого PowerShell . Однако я никогда не делал его сам, поэтому не уверен, что они подходят для размещения в службе Windows, поскольку служба может работать не всегда.

0 голосов
/ 26 октября 2008

Еще один способ разоблачения внутреннего состояния службы Windows пришел на ум. Вы можете предоставить информацию через WMI, которую можно использовать из PowerShell или из команд PowerShell.

Я не уверен, что вы можете указывать своей службе выполнять действия через WMI, но вы по крайней мере сможете вывести состояние.

...