Можно ли писать службы Windows в Powershell
Я написал программу в PowerShell, которая делает циклы и проверяет материал.
Я хотел бы преобразовать это в службу Windows.
Я создал службу Windows (в Admin - >Services), но не могу ее запустить.
Я почти уверен, что мне не хватает правильного интерфейса, который система должна вызвать, чтобы запустить/остановить/приостановить/и т. д. службу.
Я могу найти множество примеров, когда речь заходит о том, чтобы сделать это в VB/C#/MS-lang, но ничего о том, как это сделать с помощью PowerShell. Есть ли какая-либо документация (или желательно примеры кода) там, чтобы помочь с этим?
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
Позволит вам начать мусорить что-либо как услугу. Есть также бесплатные альтернативы этому приложению, которое делает то же самое.
Comments