当前位置: 首页 > 知识库问答 >
问题:

任务调度程序和powershell脚本永远不会结束

胡致远
2023-03-14

我有一个手工编写的脚本。但是,当我在Task Scheduler中调度它时,脚本永远不会结束,因此下次尝试运行时,它会失败,因为之前的实例仍在运行。第一次或手动运行时,脚本本身需要几秒钟才能完成。以下是脚本:

$source = "\\server1\upload"
$destination = "\\server2\upload"
$logfile = "c:\Scripts\fileMover\log.txt"
$table = Get-ChildItem $source -include *
foreach ($file in $table){
    $filename = $file.FullName
    #write-host $filename
    try
    {
        move-item -LiteralPath $filename -destination $destination -force
        $body = "Successfully moved $filename to $destination"
        $subject = "fileMover Succeeded"
    }
    catch
    {
        $body = "Failed to move $filename to $destination"
        $subject = "fileMover Failed"
    }
    finally
    {
        $body | out-file $logfile -append -width 1000 -encoding ascii
        Send-MailMessage -To "filemoverconfirmations@domain.com" -From "uploader@domain.com" -Subject $subject -SmtpServer "10.1.10.1" -Body $body
        exit
    }
}
exit

使用以下设置调度脚本:

  • 无论用户是否登录,请运行(用户帐户已被授予作为批处理程序登录权限)
  • 以最高权限运行
  • 每日触发,每 2 分钟一次
  • 要执行的操作: 启动程序 powershell -文件 c:\Scripts\upload.ps1

作为一种解决方法,我将任务配置为1分钟后自动停止。但是,我担心在某些情况下——例如大量大文件——脚本可能会在完全完成之前终止。

脚本需要每2分钟运行一次。

共有3个答案

段干长恨
2023-03-14

对于“启动程序”操作,请将 powershell 列为“程序/脚本”,并将要运行的脚本的路径放在“添加参数(可选)”框中。

如果您尝试通过将PowerShell脚本直接列为“程序/脚本”来“运行”该脚本,该操作将永远不会完成,因为记事本是与< code>.ps1扩展名关联的默认应用程序(以帮助用户避免意外运行PowerShell脚本),因此它会在后台的记事本中打开该脚本,而不是执行它。记事本不会自动关闭。

梁丘烨
2023-03-14

这听起来很傻,但我最初遇到的问题与其他答案中详述的问题相同-试图运行。ps1直接编写脚本,而不是通过powershell.exe。自从我看到记事本打开后,我就解决了那个部分,但在纠正错误后,记事本仍在运行。

孙熠彤
2023-03-14

当我尝试直接执行.ps1文件时,我遇到了这个问题。执行 Powershell 并将其作为参数提供给脚本。

计划任务操作选项卡:

Program\script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

添加参数(可选):< br > < code >-命令

 类似资料:
  • 我正在尝试设置一个要自动执行的python代码。 我从要执行的小代码开始: 任务将完全启动并执行(文件已修改),但它永远不会在任务调度程序中结束。 这个和这个存在于某处,但没有真正的答案。这些线程中提出的唯一解决方法是在Windows中强制在给定时间后结束任务,但这需要知道python脚本将花费多长时间,而我的实际任务将不会如此。 任务调度程序如何知道python脚本已完成? 我在任务计划程序中以

  • 这是我第一次安排python脚本。我的目标是安排我的python脚本每10分钟运行一次。 缅因派 我在windows任务计划程序中创建了一个任务,但我的脚本没有运行(我知道脚本正在运行,因为我可以手动运行它)。我试图解决这个问题已经有好几个小时了,但一点运气都没有。 首先选择python路径,然后选择项目的文件路径并选择。我想跑步。例如,我选择每10分钟触发一次。 完成上述步骤后,什么都不会发生。

  • 问题内容: 抱歉,这听起来太简单了。我是Java的新手。 这是我用来检查的一些简单代码。当我运行它时,我无法停止它。我以为如果不写任何输入并按,就可以避免循环。 有人可以向我解释在这种情况下如何工作吗? 问题答案: 从System.in读取时,默认情况下是从键盘读取的,这是一个无限的输入流……它的行数与用户希望输入的行数相同。我认为发送EOF的控制序列可能会起作用,例如CTL-Z(或者是CTL-D

  • 问题内容: 看过很多论坛,但没有找到答案…简单的东西,用@PostLoad注释的方法永远不会被调用…通过@EntityListeners添加了侦听器,但问题仍然存在。我正在使用基于SessionFactory的配置。 问题答案: 当使用基于基础的配置时,EJB3 注释不起作用,后期加载方法将永远不会被调用。 使用Hibernate的Interceptor或事件或基于基本的配置。

  • 我的域控制器上有一个小脚本,它被设置为通过SMTP向我发送有关最新安全事件4740的电子邮件。 手动执行时,脚本将按预期运行;但是,当设置为通过计划任务运行时,尽管它显示已执行,但没有任何反应(没有电子邮件)。 脚本如下: 计划任务设置如下: 我还尝试了以下方法: 根据任务历史记录:任务开始、行动开始、创建任务流程、行动完成、任务完成。我浏览了网站上一些有着相同“问题”的不同链接,但它们似乎都有一

  • 我在测试一些短信发送和接收结果应用程序。它按预期发送短信,并祝酒“短信发送”。但它从不祝酒“短信发送”。它也从来没有达到 这意味着从不需要为结果SMS_DELIVERED...知道为什么吗?... Androidanifest.xml