Enviar comandos administrativos para o meu C Serviço # Windows usando o próprio cmdlets do PowerShell

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

  •  04-07-2019
  •  | 
  •  

Pergunta

Eu tenho um aplicativo C # Windows, que executa um serviço. Gostaria de alavancagem PowerShell, a fim de oferecer uma interface de gerenciamento de linha de comando para administrar o meu serviço em execução.

Do meu ponto de vista, eu estou tentando oferecer o mesmo administrativa de interface a la Exchange 2007.

Você tem alguma sugestão ou código de exemplo sobre como iniciar / projetar os cmdlets de gestão a fim de "conexão" para o serviço em execução para consulta ou enviar comandos administrativos?

Como posso acessar estado de tempo de execução interno do serviço a partir da linha de comando PowerShell? Por exemplo, eu gostaria de implementar um cmdlet denominado Get-ConnectionsInfo para descobrir quantas conexões de saída meu serviço Windows é utilizando quando o cmdlet é executado.

Um exemplo ou web ligação prática a um exemplo seria mais do que bem-vindas.

Obrigado, Robert

Foi útil?

Solução

A chave aqui é começar escrevendo uma API que você pode acessar de .Net, então você pode facilmente quebrar as chamadas para esta API em uma DLL que expõe classes que são cmdlets PowerShell. Se você quer que alguém seja capaz de administrar seu serviço remotamente então eu acho que, provavelmente, a melhor coisa é criar tanto um webservice ou serviço WCF que faz isso e então você pode dispor que em PowerShell. Se você tem um olhar no CodePlex você vai encontrar alguns exemplos de administrar os Serviços baseados na web remotas como GoGrid e serviços de dados SQL que lhe dará um código de exemplo para você começar.

Outras dicas

Uma solução seria para o seu serviço Windows para expor uma interface administrativa por meio do WCF. Seus comandos PowerShell usaria esse serviço WCF para retirar informações e fazer o serviço do Windows executar ações.

Outra maneira de expor o estado interno do Windows Service veio à mente. Você poderia expor informações por meio de WMI que pode ser consumida a partir PowerShell ou seus comandos PowerShell.

Eu não tenho certeza se você é capaz de dizer ao seu serviço para executar ações através de WMI, mas você teria, pelo menos, ser capaz de puxar para fora do estado.

Uma terceira alternativa poderia ser a de fazer o serviço do Windows ser um PowerShell provedor de conteúdo . No entanto, eu nunca fiz um para mim, então eu não tenho certeza se eles são adequados para hospedagem em um serviço do Windows, desde que o serviço não pode estar em execução o tempo todo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top