【问题标题】:Windows Server 2003: Task Scheduler is not running successfully VBS file jobsWindows Server 2003:任务计划程序未成功运行 VBS 文件作业
【发布时间】:2020-09-17 05:48:04
【问题描述】:

我们有一个旧的 Windows Server 2003 r2,它除了使用任务调度程序和一个 VBS 文件来检查和重命名一些经常重复出现的数据文件之外什么都不做。它设置为使用我的凭据每小时运行一次。如果我在登录时“运行”它,任务就会运行并正确完成。当没有人登录时,任务运行但以 0x1 代码完成,即失败。 我检查了事件日志,没有看到任何可以识别为错误或失败的内容。我们相信它在大约 6 到 8 个月前一直在成功运行(是的,它是其中之一设置它并忘记它的东西,我们没有定期检查它)。

=================附加信息================

我运行 assoc .vbs 并得到以下输出:.vbs=VBSFile

我不确定如何确定用户环境变量

对于该任务,我尝试了 vbs 文件和包含对 vbs 文件的引用的 bat 文件。两者都在我登录时运行,而在我未登录时都无法成功完成。

这是 vbs 脚本:

Dim fso, file, recentDate, recentFile, theFile, myfolder, mypath
set fso = CreateObject("Scripting.FileSystemObject")
set recentFile = Nothing

mypath = "D:\TheFTP\Main\Camera\lobby" 

set myfolder = fso.GetFolder(mypath)
For Each file in myfolder.Files
  If (recentFile is Nothing) Then
    set recentFile = file
  ElseIf (file.DateLastModified > recentFile.DateLastModified) Then
    set recentFile = file
  End If
Next

fso.CopyFile mypath& "\" & recentFile.name, "D:\TheFTP\main\camera\cam3.jpg"
set recentFile = nothing
set fso = nothing

这是我将输出通过管道传输到文件的最后一个 bat 文件:

C:\windows\system32\cscript.exe c:\CopyWebCamFile.vbs > c:\debug.txt

我未登录时的Debug.txt输出显示错误,见下文,当我运行它并登录时不存在:

Microsoft (R) Windows 脚本宿主版本 5.6

版权所有 (C) Microsoft Corporation 1996-2001。保留所有权利。

CScript 错误:Windows 脚本宿主初始化失败。 (系统找不到指定的文件。

================================================ ======

更多信息,我在脚本中添加了几个 Wscript.Echo 语句,在第一行之前、FOR 循环之后和 "复制文件”命令。当我登录时,我看到 C:\debug.txt 中的所有输出。未登录时,我看到与上述相同的错误消息,即没有 Wscript.Echo 输出。这将表明当我未登录时它无法找到我的 vbs 文件。

============================

这里仍然没有快乐。我移动并修改了 .bat 文件以输出脚本文件的内容:

type H:\Task_Stuff\CopyWebCamFileTest.vbs > H:\Task_Stuff\debug2.txt
C:\windows\system32\cscript.exe H:\Task_Stuff\CopyWebCamFileTest.vbs > H:\Task_Stuff\debug.txt

和以前一样,当我登录时运行时,我会输出到两个 .txt 文件,而 debug2.txt 中没有任何内容,而我未登录时 debug.txt 中的通常消息。

我会调整防病毒设置,但我需要先询问一下。我们正在使用 Symantec SEP。

如何检查用户环境变量?

=====================

也许这会澄清我的问题或提出解决方案?

你能提供任何想法吗...RDK

【问题讨论】:

  • .vbs 脚本是否依赖于用户环境变量?如果是这样,当“用户未登录”时它可能不起作用。您是否完全限定了任务中 C:\windows\system32\cscript.exe 和 .vbs 脚本的路径?我见过错误的 %PATH% 和 %PATHEXT% 会导致此类问题的实例。 cscript.exe 或 wscript.exe 是否设置为 .vbs 文件扩展名的默认处理程序?您可以使用:ASSOC .vbs 进行检查。计划任务是否可以使用旧的缓存密码?编辑任务并按 [OK] 应该会提示您输入新密码。希望这里有帮助。
  • 我将根据您的建议更新我的问题
  • 您可以尝试将您的 .vbs 脚本移动到文件夹中吗?您可能会遇到防病毒安全软件或软件限制策略强制执行的限制(例如,当从驱动器 C 的根目录运行 .vbs 时:通过计划任务)。好奇:上次重启服​​务器是什么时候?只是为了确保有足够的内存和可用句柄。
  • 根据您关于将脚本移动到文件夹的想法和其他一些想法,我更新了我的问题
  • 我在您的脚本中看不到对用户环境变量的任何依赖,因此您可以忽略该注释。但是,驱动器 H: 和 D: 是本地驱动器吗?如果不是,请确保它们是对计划任务帐户始终可用的持久驱动器映射(在重新启动之间),并且不需要 netlogon 脚本来映射它们。

标签: vbscript scheduled-tasks windows-server-2003


【解决方案1】:

首先,我们要感谢 LeeHarvey1 在我们寻找此问题的原因时提供的时间和建议。最后是他的一个建议解决了这个问题,但我们仍然不知道是什么原因造成的。

重新启动系统后,任务调度程序和运行 VB 脚本的所有问题都迎刃而解了!我们曾考虑过他早期的建议,但由于这台服务器只上线了 3 个月多一点,我们不以为然。根据我们的经验并不过分。然而,当所有其他方法都失败时,我们选择这样做并且“瞧”它解决了这个问题。我们希望知道是什么原因造成的,但现在很高兴我们可以继续做其他事情。

再次感谢LeeHarvey1....

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 2014-10-08
    • 2011-08-04
    • 2016-03-28
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多