15

I have infinite loop PowerShell (Testing purpose) script, which I want to run as a Service in Windows Server 2008 R2 (Standard).

I'm using the following command to create the Windows service,

sc.exe create "My PS1Service" binPath= "powershell.exe -NoLogo -Path D:\TEST\test.ps1"

And the result is [SC] CreateService SUCCESS

But when I try to run the service My PS1Service , it return the following error

Windows Could not srart the My PS1Service service on Local
Computer
Error 1053: The service did not respond to the start or control
request in a family

Any help here !!!

HamTheAstroChimp
  • 1,275
  • 4
  • 15
  • 28
  • possible duplicate of [Can you write Windows services in Powershell](http://stackoverflow.com/questions/6125453/can-you-write-windows-services-in-powershell) – Raf Oct 22 '14 at 11:07
  • look at: `get-help New-Service`. Also specify the full path to `powershell.exe` – arco444 Oct 22 '14 at 11:09
  • You can't just run any executable as a service. It has to respond to requests of the service control manager. Typically, in C# this would involve inheriting from `System.ServiceProcess.ServiceBase`. Are you doing anything like that in test.ps1? – Mike Zboray Oct 23 '14 at 05:09
  • @mikez , No im not doing anything like C# stuff. its just a PS1 script which has infinite loop & writes numbers into a file – HamTheAstroChimp Oct 27 '14 at 12:08
  • Try creating service which runs with local ID. Also check the execution policy. – Chand Aug 21 '17 at 08:37
  • I was able to install service from .ps1 with nssm super quickly. It is much easier then WINSW an I don't understand the negative votes for nssm. Could somebody please comment on this? nssm is available in chocolatey repository, hence very painless installation. – chotkery Sep 08 '20 at 09:18

4 Answers4

5

Due to the length of the articles I don't want to paste them in the answer.

Check out this post which is the most comprehensive source of info I've found regarding powershell services: https://msdn.microsoft.com/en-us/magazine/mt703436.aspx

which links to an example powershell service: http://jf.larvoire.free.fr/progs/PSService.ps1

I didn't end up successfully modifying this as it was going to take me longer to read through it and understand it than it would to use a different method for my use case, but I'd certainly be going back to that if I needed to create a service in powershell in the future.

Also this: https://www.sapien.com/blog/2017/07/12/write-a-windows-service-in-powershell/

Gostega
  • 429
  • 1
  • 5
  • 14
  • I wouldn't normally post links in an answer as they are subject to breaking but these are very long articles. – Gostega Jan 03 '18 at 03:46
  • 2
    The magazine contains dead links using bit.ly. Here's the french guy repo: https://github.com/JFLarvoire/SysToolsLib/blob/master/PowerShell/PSService.ps1 – Dimas Jan 13 '20 at 18:08
  • You don't need to post everything, but you should post the basics. – FreeSoftwareServers Jun 28 '23 at 19:47
3

I've been looking all over the place for a decent way to make a PS1 into a service. Easiest way I found is with Winsw: https://github.com/kohsuke/winsw

Works like a charm.

JustAGuy
  • 5,151
  • 11
  • 41
  • 55
0

I have had success with Non-sucking Service Manager (NSSM) as well. https://nssm.cc/

Net Dawg
  • 518
  • 1
  • 6
  • 10
-5

you can create by below step:

  1. First go to the path where PowerShell script located.
  2. Then run below Command: powershell.exe -ExecutionPolicy UnRestricted -File .\filename.ps1
prem
  • 21
  • 3