Отправлять административные команды в мою службу C # Windows с помощью собственных команд PowerShell

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

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

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

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

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

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


person Robert Mircea    schedule 25.10.2008    source источник
comment
Служба работает на том же компьютере, на котором будут выполняться сценарии?   -  person Scott Saad    schedule 27.10.2008
comment
В этом случае да, но в других сценариях он может работать на производственном сервере, а командлеты могут быть установлены на другой операционной машине, используемой системными администраторами для удаленного управления службами.   -  person Robert Mircea    schedule 01.11.2008


Ответы (4)


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

person Darren Gosbell    schedule 03.11.2008

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

person Magnus Lindhe    schedule 26.10.2008

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

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

person Magnus Lindhe    schedule 26.10.2008

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

person Magnus Lindhe    schedule 26.10.2008