我的脚本无法在任务计划程序下运行。为什么?

15

我有一个vbscript脚本,当我自己运行它时,它可以正常运行。

但是很奇怪的是,当我以管理员身份在任务计划程序下运行它时,它可以运行,但甚至不会写入我的日志文件。这不应该是权限问题,因为我运行它的用户是管理员。

这是在Win2008 64位机器上调用32位dll的脚本。

C:\windows\SysWOW64\cscript.exe Bob.vbs

我也将本地目录设置为我运行脚本的位置。

具有讽刺意味的是,任务计划程序说“成功完成”了任务。

此外,任务计划程序中还有其他脚本可以正常运行,只有这个脚本有问题。

是否有人能提供一份我可以检查的事项清单?


这并不是反讽:任务计划程序已经完成了任务。问题出在任务本身或cscript上。 - paxdiablo
你想要写入哪里?希望不是任何网络驱动器,因为管理员可能无法访问。你能否简单地以管理员身份登录并尝试运行脚本以查看错误?你是否依赖于任何路径或其他环境设置,这些设置对管理员来说可能不存在? - Zoredache
你能发布Bob.vbs的代码吗? - Patrick Cuff
13个回答

9

我曾经在Windows 2008 Server和Windows 7上使用DOS批处理文件和VB脚本时遇到过这个问题。在每种情况下,一旦我为计划任务操作设置了“启动目录”,一切都正常工作。


3
设置可选的“起始路径”参数后,所有我的脚本在Windows 7 / 2008 R2系统上都能正常运行。我已经因此烦恼了几天。谢谢! - MikeCov
可能相关 - 我升级到Win10 Pro 21H2后,.vbs文件的任务计划程序开始出现故障。设置“启动位置”可以使事情重新恢复正常。 - DAG

7
我曾经遇到过类似的问题,即在我的SVN服务器上运行定时任务时出现了问题。我的脚本应该写入当前工作目录(我指定的任务“开始于”文件夹),如果我登录服务器并运行脚本,它可以正常工作。但是当作为定时作业运行时,就无法正常工作了。
在我的情况下,看起来调度程序重新分配了工作目录,以用户帐户用于运行作业的TEMP环境变量所指定的目录为工作目录,而不是我指定的任务目录(“开始于”文件夹)。
请检查帐户的TEMP文件夹,看看你的文件是否在那里。

1
如何让程序在指定的“开始于”文件夹中工作。 - clarifier

6

如果您正在运行Win2008 64位机器:在同一台服务器上,任务计划程序运行一个批处理文件(例如runvbs.bat),用32位版本的命令行解释器调用cscript,如下所示:

@echo off
%windir%\syswow64\cmd.exe /C "c:\windows\system32\cscript.exe //B //nologo import_some_data.vbs"

请注意双引号。

我使用管理员组权限和最高特权运行。

配置:Windows® 7,Windows Server™ 2008 R2

在“编辑操作”对话框中:

操作:启动程序

程序/脚本:runvbs.bat

启动位置:c:\inetpub\wwwroot\asp\importstuff\


5

我遇到了这个问题(整个早晨都在解决),并在这里找到了解决方案:

在Windows任务计划程序中,我需要点击“更改用户或组”按钮,并添加“管理员”组。

希望对某些人有所帮助。


1

对于Windows 2008,您可能需要确保任务以管理员权限运行。

常规选项卡 - (勾选)以最高权限运行


1

我解决了同样的问题。当连接到数据库时,脚本会失败,然后在修复后,创建Xls文件时也会失败。 我创建了一个批处理文件,并将以下内容添加到其中。此批处理文件将调用我的VB脚本并以32位模式运行。

%windir%\SysWoW64\cmd.exe /C "c:\windows\system32\cscript.exe //B //nologo C:\ScheduledJobs\PrimeReconDev\myVBScript.vbs"

我设置了任务计划来执行我的批处理文件,内容如上,并将执行用户设置为管理员。通过在常规选项卡上使用“更改用户或组”选项来完成此操作。一旦完成,我就能够成功执行,没有问题。 最初我是以我的身份执行的,而我是管理员组中的成员,但仍然失败了。以内置管理员身份执行就解决了问题。

0

我曾经遇到过同样的问题。

我通过使用相对路径(“logs\log”)来解决它,而不是之前使用的绝对路径(“U:\workingDirectory\logs\log”)。

显然,当您通过任务计划程序执行脚本时,需要使用相对路径。


0
我遇到了同样的问题。 在任务 -> 运行字段中使用下一个字符串 CMD /C "我的VBScript的完整路径" 如 CMD /C c:\Test\MyScript.vbs

0

我找了很久才解决了这个问题,现在我要分享一下。

之前的脚本在 Server 2003 上可以正常运行,但想要迁移到 Server 2012 时一部分脚本无法运行。

必须创建一个新任务,并在“常规”选项卡中选择“配置”为“Windows Server 2003、Windows XP或Windows 2000”。如果使用基本任务,则此选项不允许使用2003,必须使用新任务。


0

我过去也遇到过类似的问题,当调度vbs脚本时代码无法执行 - 这可能会成为一个问题!同时很好奇是否有人能够解决这个问题。 (顺便说一下,我们通过将代码重写为C#控制台应用程序来解决了这个问题)


C#比VBScript要好得多。我得向老板建议一下这个 :) - GordyII
我遇到的唯一问题是尝试直接运行VBS文件(没有传递参数)。这个问题通过使用cscript得以解决,但在这里显然不是这种情况。不过,我将会关注SysWOW64的交互。 - paxdiablo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接