使用任务计划程序运行脚本,用户上下文完全静默,没有弹出窗口或 cmd flash

Posted

技术标签:

【中文标题】使用任务计划程序运行脚本,用户上下文完全静默,没有弹出窗口或 cmd flash【英文标题】:Run script using Task Scheduler with user context complete silent with no popup or cmd flash 【发布时间】:2016-12-06 13:26:37 【问题描述】:

我尝试使用命令运行脚本

cmd.exe /c Start /min powershell.exe -windowstyle hidden -file <file>.ps1

但是会在几分之一秒内获得一个 CMD 窗口。我需要它完全隐藏运行。

【问题讨论】:

只需运行 PowerShell 脚本,不要使用所有的 starthidden mumbo jumbo,并在任务上启用“无论用户是否登录都运行”复选框。 @AnsgarWiechers 的评论应该是答案。 【参考方案1】:

无论用户是否登录,都配置定时任务运行:

并将命令行简化为:

powershell.exe -File "C:\path\to\your.ps1"

这使任务在后台运行,没有可见窗口。

【讨论】:

您可能需要将自己添加到 Backup Operators 组才能工作,因为在您的帐户下在后台运行任务(如果脚本需要更高的权限)将需要 Run Batch 权限。通过将自己添加到 Backup Operators,我解决了与本文略有不同的问题:danblee.com/log-on-as-batch-job-rights-for-task-scheduler【参考方案2】:

我遇到了这个问题,我可以解决它的唯一方法是使用简单的 VBS 包装器调用 PowerShell 脚本:

https://github.com/gbuktenica/PsRun

http://blog.buktenica.com/run-a-powershell-task-silently/

' SYNOPSIS
'   Run a PowerShell script in the user context without a script window
' EXAMPLE
'   wscript.exe PsRun.vbs MyPsScript.ps1
' AUTHOR
'   Glen Buktenica

Set objShell = CreateObject("Wscript.Shell")
Set args = Wscript.Arguments
For Each arg In args
    Dim PSRun
    PSRun = "powershell.exe -WindowStyle hidden -ExecutionPolicy bypass -NonInteractive -File " & arg
    objShell.Run(PSRun),0

【讨论】:

隐藏VBS运行的神奇之处在于行尾的0:objShell.Run(PSRun),0 Glen Buktenica 的脚本运行良好,但“For”需要一个“Next”。

以上是关于使用任务计划程序运行脚本,用户上下文完全静默,没有弹出窗口或 cmd flash的主要内容,如果未能解决你的问题,请参考以下文章

crontab 普通用户添加的计划任务不能执行

Windows 10计划开机或远程开机

Selenium - 使用 Windows 任务计划程序与命令行

WIN7 64位系统任务计划程序里运行VBS脚本 报错,脚本本身没问题!请问怎么解决?

任务计划程序问题 - 无论用户是不是登录都运行不工作

通过 R 运行 .vbs 脚本,在任务计划程序中安排