You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在后台运行Windows PowerShell脚本 实现登出后仍正常执行

PowerShell 后台运行及登出后保持执行方案

1. 等同Unix &运算符的普通后台运行方案

如果仅需要在当前用户登录、PowerShell会话保持期间后台运行脚本,和Unix & 功能完全对等的实现是使用Start-Job命令:

  • 运行自定义脚本逻辑:
    Start-Job -ScriptBlock { # 此处填入你要执行的代码 }
  • 运行本地.ps1脚本文件:
    Start-Job -FilePath C:\你的\脚本\路径\test.ps1
  • 常用配套操作命令:
    • 查看所有后台任务:Get-Job
    • 查看指定任务的输出结果:Receive-Job -Id <任务ID>
    • 终止运行中的后台任务:Stop-Job -Id <任务ID>

注意:该方案仅在当前PowerShell会话开启、用户处于登录状态时生效,关闭会话或登出系统后任务会自动终止。


2. 用户登出后仍可持续运行的持久化方案

如果需要脚本不受用户登出影响持续运行,推荐以下两种原生实现方案:

方案1:注册计划任务(最推荐,适配绝大多数场景)

PowerShell 自带的Register-ScheduledJob命令可以直接创建系统级计划任务,支持配置「无论用户是否登录都运行」的规则:

# 1. 配置触发规则,示例为2024年5月20日14点一次性触发,可根据需求修改为定时/开机触发等
$trigger = New-JobTrigger -Once -At "2024/05/20 14:00"
# 2. 配置运行规则:无论用户是否登录都运行
$jobOption = New-ScheduledJobOption -RunWhetherLoggedOnOrNot
# 3. 注册持久化后台任务
Register-ScheduledJob -Name "你的后台任务名称" -FilePath C:\你的\脚本\路径\test.ps1 -Trigger $trigger -ScheduledJobOption $jobOption
  • 查看已创建的持久化任务:Get-ScheduledJob
  • 不需要时删除任务:Unregister-ScheduledJob -Name "你的后台任务名称"

方案2:封装为系统服务(适合长期驻留的脚本)

如果脚本需要作为常驻后台进程运行,可以直接创建Windows系统服务,默认以系统账户运行,完全不受用户登录状态影响:

  • 示例创建命令:
    sc create "自定义服务名称" binPath= "powershell.exe -ExecutionPolicy Bypass -File C:\你的\脚本\路径\test.ps1" start= auto

注意:binPath=和后面的路径之间必须保留一个空格,否则命令会执行失败。


常见注意事项

  • 建议给持久化运行的脚本添加日志输出,可在脚本开头添加Start-Transcript -Path C:\日志\存储\路径\run.log -Append自动记录所有运行输出,方便排查问题。
  • 执行脚本时如果触发系统执行策略限制,可在启动PowerShell的参数中添加-ExecutionPolicy Bypass跳过策略校验。
  • 计划任务/服务的运行权限按需配置,涉及文件读写、网络请求等操作时确保对应运行账户有足够权限。

内容的提问来源于stack exchange,提问作者user12483956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:45:04