我有一个 VBScript 脚本,当我手动运行时,它可以完美运行,但是当我将其作为计划任务运行时,Err.Description
中的错误是“找不到路径”。
- 我已经在计划任务中设置了路径。
- 我还在脚本本身中设置了当前工作目录。
- 我已将计划任务设置为以我登录的用户身份以“最高权限”运行。
- 我尝试在
filename
变量中指定完整路径(尽管该路径已从下面的示例中删除) - 我尝试过指定带有或不带有最终斜杠的各种路径。
(注意:下面的示例是实际脚本的子集/修改版本,以便于阅读此问题)
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"
编辑:我用 shell.Run
调用 robocopy
替换了 fs.CopyFile
。当我手动运行时它有效。当我从计划任务运行时,它显示 “错误 1326 (0x0000052E) 访问目标目录\\172.17.201.12\Backups\从主数据库服务器复制\
登录失败:未知的用户名或错误的密码。”
所以我猜计划任务没有使用其他服务器上此共享文件夹的存储凭据。那么有没有办法让它使用存储的凭据?或者我是否必须将该文件夹设置为“所有人”的完全控制权?
最佳答案
看起来,当直接运行脚本时,它能够使用目标服务器的缓存凭据,但是当通过计划任务运行时,它不会这样做,所以我通过添加目标服务器的凭据解决了问题:
控制面板->用户帐户->“管理您的网络密码
”
在目标服务器上添加适当的用户帐户后,脚本现在可以从计划任务成功运行。
(注意:这些服务器不是域的成员)
关于vbscript - 作为计划任务运行脚本时"Path not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46073618/