Powershell 将.ps1文件转换为Windows服务

Powershell 将.ps1文件转换为Windows服务,powershell,service,server,nssm,Powershell,Service,Server,Nssm,我正在尝试将.ps1文件转换为作为windows服务运行。这需要作为服务运行,因为它需要业务连续性(计划任务不是选项)。我一直使用NSSM包装.ps1,因为它将作为exe文件通过NSSM运行 这适用于Windows Server 2012中的不同脚本,但此脚本略有不同,我需要让此服务在Windows Server 2016上运行。脚本本身连接到大量其他服务器(我总共有3个服务-Windows服务/Windows进程/Linux进程),这些服务在PowerShell中运行时都可以工作 下面是一个脚

我正在尝试将.ps1文件转换为作为windows服务运行。这需要作为服务运行,因为它需要业务连续性(计划任务不是选项)。我一直使用NSSM包装.ps1,因为它将作为exe文件通过NSSM运行

这适用于Windows Server 2012中的不同脚本,但此脚本略有不同,我需要让此服务在Windows Server 2016上运行。脚本本身连接到大量其他服务器(我总共有3个服务-Windows服务/Windows进程/Linux进程),这些服务在PowerShell中运行时都可以工作

下面是一个脚本开始的示例,以便您了解它的工作原理(可能不相关)

如前所述,运行独立脚本的脚本可以无缝地工作

将其作为服务运行的最佳方式是什么?或者在Windows Server 2016中使用NSSM时是否存在任何已知问题

我还发现了下面可能指向正确的方向,因为我断断续续地在日志中找到了它们

这里是Windows系统管理员

从纯面向服务的角度出发,有几种不同的方法来实现这一点

---一,---

如果您使用的是Server 2016,我相信Powershell命令“新服务”可能是最干净的方式之一。看看下面的语法以及它是否适合您的用例--

此CMDlet采用凭据参数,因此根据您的使用情况,可以访问其他外部计算机上的资源

---二,---

另一种方法是在windows中使用旧的可靠内置SC.exe实用程序

SC CREATE <servicename> Displayname= "<servicename>" binpath= "srvstart.exe <servicename> -c <path to srvstart config file>" start= <starttype>
据我所知,这将创建一个在本地系统上下文下执行的服务。有关更多信息,请查看以下内容:

https://support.microsoft.com/en-au/help/251192/how-to-create-a-windows-service-by-using-sc-exe

https://www.howtogeek.com/50786/using-srvstart-to-run-any-application-as-a-windows-service/
---三,---

你可能想考虑手动注入一些注册表项来创建你自己的服务(这是SC.exe在引擎盖下做的)。 虽然很遗憾,我目前无法提供锅炉铭牌代码,但我鼓励您查看以下资源:

https://www.osronline.com/article.cfm%5Eid=170.htm 
注意-您需要提供所有必需的子密钥,以使其正常工作


与任何注册表更改一样,在进行任何更改之前,请备份您的注册表并执行编辑,相关风险由您自行承担。如果可能的话,我只能建议在实施到prod之前在备用/测试虚拟机上尝试这一点。

以系统服务的形式运行任何不是以这种方式运行的东西都是一个坏主意。如果我的业务连续性依赖于此,那么我会尝试将其作为一个适当的编译服务重新编写并以这种方式运行;sc.exe create WindowsServicePoller binpath=“C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe-NoProfile-文件E:\SRETools\WindowsService.ps1–ExecutionPolicy Bypass”,但该服务不以启动;Windows无法在本地计算机上启动WindowsServicePoller服务。错误1053:服务未及时响应启动或控制请求。
https://support.microsoft.com/en-au/help/251192/how-to-create-a-windows-service-by-using-sc-exe

https://www.howtogeek.com/50786/using-srvstart-to-run-any-application-as-a-windows-service/
https://www.osronline.com/article.cfm%5Eid=170.htm