Можно ли писать службы Windows в Powershell



Я написал программу в PowerShell, которая делает циклы и проверяет материал.
Я хотел бы преобразовать это в службу Windows.
Я создал службу Windows (в Admin - >Services), но не могу ее запустить.
Я почти уверен, что мне не хватает правильного интерфейса, который система должна вызвать, чтобы запустить/остановить/приостановить/и т. д. службу.



Я могу найти множество примеров, когда речь заходит о том, чтобы сделать это в VB/C#/MS-lang, но ничего о том, как это сделать с помощью PowerShell. Есть ли какая-либо документация (или желательно примеры кода) там, чтобы помочь с этим?

509   5  

5 ответов:

Если вы абсолютно хотите выполнить свой код PowerShell в службу, я думаю, что вы можете написать оболочку службы C# для кода PowerShell.

Вы нашли примеры того, как создать службу с помощью C#, и очень просто вызвать Powershell из C#. Так что я удивлен, что как небольшой SrvAny ориентированный PowerShell еще не существует.

Мой совет здесь, вам лучше переписать свой код в C# как сервис.

Здесь речь идет о нескольких пунктах:

    Вы уверены, что вам действительно нужна услуга? Я согласен с замечаниями об использовании планировщика для выполнения периодических задач. Планировщик может запускать задачи от имени администратора. Службы вызывают специальный набор API для связи с диспетчером управления службами, поэтому обычная программа не может использоваться напрямую.
  • диспетчер управления службами использует CreateProcessAsUser чтобы запустить процесс обслуживания, необходимо указать SCM на исполняемый двоичный файл, в отличие от скрипта.

Если вы не можете использовать планировщик (хотя я настоятельно рекомендую вам попробовать), я полагаю, что вы могли бы написать исполняемый двоичный файл, который действует как служба. Затем он выполнит PowerShell и ваш сценарий от вашего имени. Я думаю, что что-то вроде программы srvany, которая раньше входила в комплект ресурсов Windows Server 2003, может загрузиться для вас.

Вы можете использовать опцию Compile Script into Service PowerGUI: http://documents.software.dell.com/DOC144271

Я думаю, что вы ищете SrvAny.exe от Microsoft (я не знаю, что они поддерживают его больше, но он был вокруг в Windows 2000 Resource Kit в течение многих лет. Это по существу превратит почти любой исполняемый файл (.исполняемый, .УМК и др...) в службу. У меня VBScripts работает как квази-сервисов с помощью Srvany.exe и он работает на Windows 2003 и Windows 2008 (даже 64 бит). Это немного ограничено в том, что он не обеспечивает 100% функциональность службы (остановка запущенного сценария может быть трудно), но если вы теперь немного о программировании и среде Windows, вы можете адаптировать его для работы довольно хорошо (то есть он запустит программу после перезагрузки сервера/запуска, как вам, вероятно, потребуется от службы. Есть кое-какая документация по Срванам.exe (хотя это может быть немного туповато и трудно найти). Однако он бесплатный и построен для Windows, поэтому он должен работать для вас. Я согласен для простоты, что идея запланированной задачи стоит того, чтобы подумать о ней, так как она еще больше упрощенно, что srvany.exe

Http://www.firedaemon.com/

Позволит вам начать мусорить что-либо как услугу. Есть также бесплатные альтернативы этому приложению, которое делает то же самое.

Comments

    Ничего не найдено.