计划的 Powershell 触发时不会运行,手动运行时不会停止运行
Posted
技术标签:
【中文标题】计划的 Powershell 触发时不会运行,手动运行时不会停止运行【英文标题】:Scheduled Powershell won't run when triggered, won't stop running when run manually 【发布时间】:2021-08-20 03:37:28 【问题描述】:我正在尝试安排一个 Powershell 脚本从 Windows 任务调度程序运行。当从 PS 窗口手动运行时,该脚本工作正常。但是,当我将其作为计划任务的操作时,会出现两个问题:
-
触发发生时,任务不会启动。
当我从任务计划程序中手动运行任务时,一个空的 Powershell 控制台窗口会出现几秒钟,然后消失。任务状态显示为“正在运行”,并一直保持这种状态,直到我手动结束它。
我已确认已使用正确的用户权限设置任务。
我已在事件查看器中确认触发事件已发生并已正确记录。
任务的动作是:
“启动程序”程序/脚本:
powershell
参数:-File "C:\Users\<username>\Desktop\script.ps1"
这是我脚本的相关部分:
Start-Sleep -Seconds 2
If (!(Test-NetConnection -ComputerName www.example.com -InformationLevel "Quiet"))
#The code in here won't affect basic execution, since during testing this If condition evaluates to False
Else
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.MessageBox]::Show("You're good to go!" , "Info" , 3)
Exit
我希望当我测试这个任务时,我应该只是弹出消息框,然后任务应该停止运行。这些都没有发生,我真的不知道为什么。
【问题讨论】:
任务本身是否隐藏?让我们通过将-WindowStyle Normal
附加到任务参数来确保 PowerShell 也显示窗口。
关于触发器,可以查看任务历史吗?还要发布触发器详细信息,以便我们获得更多信息。可能是错的。
关于如何在任务计划程序中运行 PS,这里有很多很多以前的问题 - 这是一个常见错误。将Start-Transcript
添加到您的脚本并记录它的工作,然后在此处搜索您的解决方案。
【参考方案1】:
问题是“在这个系统上运行脚本被禁用。”
about_Execution_Policies https://go.microsoft.com/fwlink/?LinkID=135170 安全错误:ParentContainsErrorRecordException |未经授权的访问
解决方案是将-ExecutionPolicy Bypass
添加到任务参数中。
(现在屏幕上出现了一个单独的控制台窗口问题,-WindowStyle Hidden
没有解决,但是有很多类似的文档可以解决这个问题,如果我找不到合适的,我会发布一个新问题解决方案)。
【讨论】:
以上是关于计划的 Powershell 触发时不会运行,手动运行时不会停止运行的主要内容,如果未能解决你的问题,请参考以下文章