Отправляйте административные команды в мою службу C# Windows, используя собственные CmdLets PowerShell.

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

  •  04-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top