如何创建Windows服务


有时候,无论您是否登录计算机,都需要一个应用程序或脚本来保持运行。可能是PowerShell脚本以监视端口在您的家庭网络上托管页面的Web服务器

关键是,如果您希望只要打开计算机就可以运行进程,脚本或程序,则需要创建Windows服务

创建Windows服务需要什么?

要在Windows 10中创建Windows服务,需要满足一些先决条件:

  • 在计算机上具有管理员访问权限
  • 作为服务运行的某种方式(PowerShell脚本,程序等)
  • 已安装不吸吮服务管理器(NSSM)
  • 什么是非吸吮服务管理器?

    是的,您不能在不解释的情况下删除这样的名称。当然这个名字很不幸,但还是准确的。可以说,非吸吮服务管理器(NSSM)是创建高度可靠且可配置的Windows服务的最简单方法。另外,它是免费的,而且是开源软件 (OSS)。

    NSSM可以通过Windows命令提示符 或图形用户界面(GUI)使用)。这意味着任何人都可以使用它。 NSSM可以用于Windows 2000及以后的任何Windows版本,包括Windows2000。有32位和64位 个版本。如果您使用的是64位计算机,请先尝试使用该版本。如果不起作用,请使用32位版本。

    您可以从网站下载NSSM从Git克隆NSSM用Chocolatey安装NSSMChocolatey是Windows的软件包管理器 。安装方法会根据您选择的路线而有所不同。请查阅NSSM的说明。对于我们的示例,我们从NSSM网站下载并将其安装在C:\ WINDOWS \ system32中。

    In_content_1全部:[300x250] / dfp: [640x360]->

    使用NSSM创建Windows服务

    在此示例中,我们将使用PowerShell脚本 创建一个服务以进行记录CPU平均负载百分比

    1. 将此脚本复制并保存为log-CPULoadPercentage.ps1到其他人都不太可能访问的位置。尝试创建目录C:/ Scripts并将其存储在该目录中。另外,在脚本中创建一个名为日志的文件夹。请注意,脚本的路径为C:/Scripts/log-CPULoadPercentage.ps1
    2. 注意:下面的所有行后跟#符号均为注释,不会影响脚本。

      CLS #Optional. I like to use this to clear the terminal when testing.
      #Make sure you have a folder called Logs in the same directory as this script #The log is where the records will be stored. Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append #While loop keeps it running until manually stopped While ($True){ #Creates a timestamp to know when the measurement was taken $timeStamp = get-date -f yyyy-MM-h:mm:ss #Gets the average load percentage at that time, then waits 5 seconds to do it again. $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5 #Isolates just the average so there isn't a weird @{Average=13} string $cpuLoadPercent = $cpuLoadPercent.Average #writes results to screen, or in this case to the log Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent" } Stop-Transcript
      1. 这可以在Windows命令提示符PowerShell中完成。以管理员身份打开
      2. 输入命令nssm install logCPUAvg并运行它。 NSSM服务安装程序窗口将打开。
        1. 单击Path:字段旁边的省略号按钮,导航到powershell.exe通常位于C:\ Windows \ System32 \。选择powershell.exe。 路径:启动目录:字段将自动填充。
          1. 参数:字段中输入以下内容:-ExecutionPolicy绕过-NoProfile-文件“ C:\ PathToScript \ get-Script.ps1”,其中最后一部分是路径到您的PowerShell脚本和脚本名称。
            1. 选择详细信息标签。在显示名称:字段中输入您希望该服务在Windows服务管理器中显示的内容。然后,在描述:字段中输入其内容。 启动类型:可以设置为自动自动(延迟启动)手动禁用。对于此练习,“自动”是很好的。
              1. 选择登录标签。选择此帐户:单选按钮,然后输入该服务将以其运行的帐户和密码。您需要选择一个用于运行该服务的帐户。理想情况下,您将创建一个Windows帐户仅用于运行此服务。此帐户的权限应仅限于该服务需要执行的操作。您可以选择本地系统帐户,但是出于安全原因不建议使用该帐户。
              2. 还有其他一些选项卡可用于自定义服务。对于此练习,这些选项卡中的默认值就足够了。选择安装服务按钮。

                1. 安装该服务后,您会看到服务“ logCPUAvg”已成功安装!窗口。选择确定以将其关闭。安装结束。
                  1. 打开Windows服务管理器并确保该服务在那里。
                    1. 运行该服务以确保它将运行。
                      1. 要验证此服务是否正在运行,请使用文件资源管理器导航至应该保存日志的位置,以查看该日志是否存在。
                      2. nssm-check-log.png

                        删除Windows服务使用NSSM

                        也许您不再需要监控您的CPU 加载,因此您希望摆脱该服务。幸运的是,NSSM使这变得容易。

                        1. Windows服务管理器中,停止该服务。为此,请选择记录CPU平均负载服务,然后选择工具栏中的方形停止按钮或左侧的停止服务链接。
                          1. 以管理员身份打开Windows命令提示符PowerShell
                          2. 输入命令nssm remove logCPUAvg并执行命令。
                            1. NSSM将要求您确认。选择
                              1. 删除服务后,您会看到Service“ logCPUAvg ”已成功删除!确认。选择确定,就完成了。
                              2. 仅此而已。检查服务经理以确保不再提供该服务是个好主意。如果仍然看到该服务,则可能需要刷新屏幕,并且应该消失了。

                                服务是一种运行需要始终运行的应用程序或脚本的好方法,如果它们失败,请自行重启,或需要不同于当前用户的特权。如果您不需要应用程序或脚本来完成所有这些操作,请考虑使用使用计划任务

                                相关文章:


                                12.11.2020