【问题标题】:How to create windows service to run a powershell script?如何创建 Windows 服务来运行 powershell 脚本?
【发布时间】:2014-12-17 19:37:39
【问题描述】:

我有无限循环 PowerShell(测试目的)脚本,我想在 Windows Server 2008 R2(标准)中作为服务运行。

我正在使用以下命令来创建 Windows 服务,

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

结果是[SC] CreateService SUCCESS

但是当我尝试运行服务 My PS1Service 时,它返回以下错误

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

这里有任何帮助!!!

【问题讨论】:

  • 请看:get-help New-Service。同时指定powershell.exe的完整路径
  • 您不能将任何可执行文件作为服务运行。它必须响应服务控制管理器的请求。通常,在 C# 中,这将涉及从 System.ServiceProcess.ServiceBase 继承。你在 test.ps1 中做类似的事情吗?
  • @mikez ,不,我没有做任何类似 C# 的事情。它只是一个具有无限循环并将​​数字写入文件的 PS1 脚本
  • 尝试创建使用本地 ID 运行的服务。还要检查执行策略。

标签: windows powershell windows-services powershell-2.0 windows-server-2008-r2


【解决方案1】:

由于文章太长,我不想将它们粘贴到答案中。

查看这篇文章,这是我发现的有关 powershell 服务的最全面的信息来源:https://msdn.microsoft.com/en-us/magazine/mt703436.aspx

链接到一个示例 powershell 服务: http://jf.larvoire.free.fr/progs/PSService.ps1

我最终没有成功修改它,因为与为我的用例使用不同的方法相比,我需要更长的时间来阅读和理解它,但我肯定会回到那个如果我以后需要在 powershell 中创建服务。

还有这个:https://www.sapien.com/blog/2017/07/12/write-a-windows-service-in-powershell/

【讨论】:

【解决方案2】:

我一直在到处寻找将 PS1 变成服务的好方法。 我发现最简单的方法是使用 Winsw: https://github.com/kohsuke/winsw

像魅力一样工作。

【讨论】:

    【解决方案3】:

    我在 Non-sucking Service Manager (NSSM) 方面也取得了成功。 https://nssm.cc/

    【讨论】:

      【解决方案4】:

      您可以通过以下步骤创建:

      1. 首先进入PowerShell脚本所在的路径。
      2. 然后运行以下命令: powershell.exe -ExecutionPolicy UnRestricted -File .\filename.ps1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-10-19
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        相关资源
        最近更新 更多