将 PowerShell 脚本转换为 Windows 服务(ps1 转服务)
众所周知,PowerShell 在管理领域表现出色。然而,有时需要将 ps1 脚本作为服务运行。由于 PowerShell 最初是作为自动化和系统管理工具设计的,它无法以服务模式原生运行(PowerShell 转服务)。
当您需要在 Windows Server 2025 上运行后台监控脚本、自动清理任务或任何长时间运行的 PowerShell 进程时,尤其是在生产环境中,期望服务能自动启动并在用户注销后继续存在,这种限制会令人沮丧。
幸运的是,这个问题可以通过使用第三方工具来解决,这些工具允许您将任何可执行文件(或脚本)作为 Windows 服务运行。
将 EXE 文件作为 Windows 服务运行的工具
有许多实用程序可以将可执行文件转换为 Windows 服务,包括:
- AlwaysUp
- NSSM (Non-Sucking Service Manager)
- WinSW
- SrvStart
- EXE Service
在本文中,我们将使用 EXE Service,因为它已经为 PowerShell 提供了现成的示例配置,并且同时支持图形界面和命令行。
将 PowerShell 脚本作为 Windows 服务运行
步骤 1:打开 EXE Service
安装 EXE Service 后,桌面上会出现一个快捷方式。
图形界面只是为了简化服务创建过程。 如果您在没有 GUI 的 Windows Server 上工作,您有两个选择:
- 在普通 PC 上创建服务,然后将其传输到服务器
- 使用命令行直接在服务器上运行 EXE Service
步骤 2:创建新服务
EXE Service 已经包含一个现成的 PowerShell 转服务示例。
只需点击 “从示例创建” 按钮。

步骤 3:配置您的 .ps1 文件路径
在出现的窗口中,您需要指定正确的路径:
- 可执行文件路径:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - 工作目录:指定您的脚本文件所在的文件夹
- 参数:
-ExecutionPolicy Bypass -File "C:\Path\To\Your\Script.ps1"
请确保路径与您实际的 PowerShell 安装位置和脚本位置匹配。

步骤 4:保存并启动服务
点击 “创建服务” 以创建 Windows 服务。
如果您希望服务立即在此计算机上运行,请点击 “启动”。
此后,您的 PowerShell 脚本将:
- 作为 Windows 服务运行
- 随系统自动启动
- 在用户注销和会话更改后继续存在
- 可通过 Windows 服务管理器 (
services.msc) 进行管理
将服务传输到另一台服务器
如果您计划将服务配置移动到另一台 Windows Server,请遵循其文档中提供的官方 EXE Service 传输说明。
这种方法在跨多台服务器部署相同配置时特别有用。
结论
PowerShell 并非作为服务构建——但像 EXE Service 这样的工具可以干净利落地解决这个问题。包装您的 .ps1 脚本,它将在启动时启动,在注销后继续存在,并与 services.msc 无缝集成。无需复杂的变通方法,也无需使用计划任务技巧。只是一个直接、可供管理员使用的解决方案。