Windows下关闭PowerShell终端后保持进程后台运行的方法
在Windows中让PowerShell脚本关闭终端后持续后台运行的方法
以下是几种可行的方案,能让你的PowerShell脚本脱离终端会话,在后台持续运行:
方案一:使用Start-Process分离进程
通过Start-Process启动独立的PowerShell进程,原终端关闭后不会影响新进程的运行。执行以下命令:
Start-Process powershell.exe -ArgumentList "-NoProfile -WindowStyle Hidden -Command .\start.ps1 -accountUuid '{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX}' -repositoryUuid '{XXXXXX-XXXXX-XXXX-XXXX-XXXXXXXXXX}' -runnerUuid '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX}' -OAuthClientId XXXXXXXXXXXXXXXXX -OAuthClientSecret XXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXX -workingDirectory '..\temp'"
-NoProfile:避免加载用户配置文件,加快启动速度并减少干扰-WindowStyle Hidden:让新的PowerShell窗口在后台运行,不显示界面
方案二:将脚本注册为Windows服务(推荐长期运行)
使用NSSM(Non-Sucking Service Manager)将脚本包装成Windows服务,服务会随系统启动自动运行,且完全独立于终端。步骤如下:
- 下载对应系统版本的NSSM工具,将其放置在系统路径(如
C:\Windows\System32)或脚本所在目录 - 打开PowerShell,执行以下命令安装服务:
nssm install BackgroundRunnerService
- 在弹出的图形配置窗口中设置:
- Path:填写PowerShell的完整路径,例如
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - Arguments:填写脚本路径及参数(建议使用绝对路径避免问题):
-NoProfile -ExecutionPolicy Bypass -Command "C:\绝对路径\start.ps1" -accountUuid '{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX}' -repositoryUuid '{XXXXXX-XXXXX-XXXX-XXXX-XXXXXXXXXX}' -runnerUuid '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX}' -OAuthClientId XXXXXXXXXXXXXXXXX -OAuthClientSecret XXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXX -workingDirectory 'C:\绝对路径\temp' - Working Directory:填写脚本所在的绝对目录
- Path:填写PowerShell的完整路径,例如
- 点击「Install Service」完成安装,之后可通过以下命令管理服务:
# 启动服务 nssm start BackgroundRunnerService # 停止服务 nssm stop BackgroundRunnerService # 删除服务 nssm remove BackgroundRunnerService confirm
方案三:创建Windows计划任务
通过任务计划程序让脚本在独立会话中运行,不受终端关闭影响:
- 打开「任务计划程序」,点击「创建基本任务」
- 设置触发器(如「当计算机启动时」或手动触发)
- 操作选择「启动程序」,填写:
- 程序或脚本:
powershell.exe - 添加参数(可选):
-NoProfile -ExecutionPolicy Bypass -Command "C:\绝对路径\start.ps1" -accountUuid '{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX}' -repositoryUuid '{XXXXXX-XXXXX-XXXX-XXXX-XXXXXXXXXX}' -runnerUuid '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX}' -OAuthClientId XXXXXXXXXXXXXXXXX -OAuthClientSecret XXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXX -workingDirectory 'C:\绝对路径\temp'
- 程序或脚本:
- 在「设置」选项卡中勾选「不管用户是否登录都要运行」,并根据需求选择「不存储密码」(脚本无交互需求时适用)
- 完成创建后,任务会在后台独立运行,终端关闭不会影响它
注意事项
- 建议使用绝对路径替代相对路径,避免因工作目录变化导致脚本无法找到依赖文件
- 若脚本执行被阻止,需添加
-ExecutionPolicy Bypass参数临时绕过PowerShell执行策略限制 - 长期运行的场景优先选择「注册为服务」或「计划任务」,稳定性更高
内容的提问来源于stack exchange,提问作者Manal Goyal
相关产品推荐
相关产品推荐

