Vbscript &引用;“未找到路径”;按计划任务运行脚本时

Vbscript &引用;“未找到路径”;按计划任务运行脚本时,vbscript,scheduled-tasks,windows-server-2008-r2,Vbscript,Scheduled Tasks,Windows Server 2008 R2,我有一个VBScript脚本,当我手动运行时,它运行得很好,但当我作为计划任务运行时,Err.Description中的错误是“路径未找到” 我已在计划任务中设置了路径 我还在脚本本身中设置了当前工作目录 我已将计划任务设置为以“最高权限”作为登录用户运行 我已经尝试在filename变量中指定完整路径(尽管这已从下面的示例中删除) 我已经尝试过使用和不使用最终斜杠指定各种路径 (注:以下示例是实际脚本的子集/修改版本,以便于阅读此问题) Set fs=CreateObject(“Scrip

我有一个VBScript脚本,当我手动运行时,它运行得很好,但当我作为计划任务运行时,
Err.Description
中的错误是“路径未找到”

  • 我已在计划任务中设置了路径
  • 我还在脚本本身中设置了当前工作目录
  • 我已将计划任务设置为以“最高权限”作为登录用户运行
  • 我已经尝试在
    filename
    变量中指定完整路径(尽管这已从下面的示例中删除)
  • 我已经尝试过使用和不使用最终斜杠指定各种路径
(注:以下示例是实际脚本的子集/修改版本,以便于阅读此问题)

Set fs=CreateObject(“Scripting.FileSystemObject”)
Set shell=CreateObject(“WScript.shell”)
shell.CurrentDirectory=“C:\backupscompressed”
设置logfile=fs.OpenTextFile(“copy files.txt”,8,True)
函数logwrite(m):logwrite=logfile.WriteLine(现在&“:”&m)结束函数
函数copytootherserver(文件名)
出错时继续下一步
dest=“\\172.17.201.12\Backups\Copied from Primary DB Server\”
将“复制”&filename&“到”&dest&“日志写入”
fs.CopyFile文件名,dest
如果错误号为0,则
日志写入“发生错误:”&错误说明
如果结束
端函数
日志写入“开始脚本”
db1_zipfile=“db1.zip”
db2_zipfile=“db2.zip”
db3_zipfile=“db3.zip”
copytootherserver db1_zipfile
copytootherserver db2_zipfile
copytootherserver db3_zipfile
日志写入“结束脚本”
Edit:我使用
shell.Run
调用
robocopy
替换了
fs.CopyFile
。当我手动运行时,它可以工作。当我从计划任务运行时,它显示从主数据库服务器访问目标目录\\172.17.201.12\Backups\Copied的错误1326(0x0000052E)\
登录失败:用户名未知或密码错误。“因此,我猜计划的任务没有使用其他服务器上此共享文件夹的存储凭据。那么有没有办法让它使用存储的凭据呢?或者我必须为“Everyone”将该文件夹设置为完全控制吗?

直接运行脚本时,它似乎能够使用目标服务器的缓存凭据,但通过计划任务运行时,它没有这样做,因此我通过添加目标服务器的凭据解决了问题:

控制面板->用户帐户->“管理您的网络密码”

在目标服务器上添加适当的用户帐户后,脚本现在可以从计划的任务成功运行

(注意:这些服务器不是域的成员)

Set fs = CreateObject("Scripting.FileSystemObject") 
Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\backupscompressed"
Set logfile = fs.OpenTextFile("copy files.txt", 8, True) 

Function logwrite(m) : logwrite = logfile.WriteLine(Now & " : " & m) End Function

Function copytootherserver(filename)
    On Error Resume Next
    dest = "\\172.17.201.12\Backups\Copied from Primary DB Server\"
    logwrite "Copying """ & filename & """ to """ & dest & """"
    fs.CopyFile filename, dest

    If Err.Number <> 0 Then
        logwrite "Error occured: " & Err.Description
    End If
End Function

logwrite "Beginning Script"

db1_zipfile = "db1.zip"
db2_zipfile = "db2.zip"
db3_zipfile = "db3.zip"

copytootherserver db1_zipfile
copytootherserver db2_zipfile 
copytootherserver db3_zipfile

logwrite "Ending Script"