【发布时间】:2017-01-23 16:37:33
【问题描述】:
我有一个计划任务正在运行,但它似乎没有工作。此任务执行批处理文件。批处理文件只包含一行:
wscript c:\myfolder/myscript.vbs
此 VBScript 文件启动命令提示符,执行 vpncli,休眠一分钟,然后继续建立连接,将用户名/密码发送到命令行窗口。
当从命令提示符窗口运行批处理文件时,这可以正常工作,但使用计划任务没有成功。它运行任务的帐户是服务托管帐户。运行任务后,我在单独的命令行窗口vpncli中查看,发现连接仍然断开。
在计划任务中执行批处理文件以解决此问题必须考虑什么?
下面是我用来在 CMD shell 中执行的部分代码。执行如下子程序:
Sub VPN_open
VPN_Profile = "vpn.myhost.com"
VPN_User = "USERNAME"
' If the password contains special characters, enclose the characters in curly braces {}.
VPN_Password = "PASSWORD"
oShell.Run "cmd"
WScript.Sleep 100
oShell.AppActivate "C:\Windows\System32\cmd.exe"
oShell.SendKeys "vpncli connect " & VPN_Profile & "~"
WScript.Sleep 10000
oShell.SendKeys VPN_User & "~"
WScript.Sleep 5000
oShell.SendKeys VPN_Password & "~"
WScript.Sleep 10000
oShell.SendKeys "exit~"
End Sub 'VPN_open
【问题讨论】:
-
根据Cisco VPN Client Command Line 应该可以运行
vpncli或vpnclient与vpncli connect vpn.myhost.com user "USERNAME" pwd "PASSWORD"这使得几乎整个VBScript 无用。 -
在阅读一分钟文档后有趣的是配置文件
vpn.myhost.com,它是必须先前配置的 *.pcf 文件中的连接条目的名称。vpncli怎么知道这个文件存储在哪里?它是从当前用户的注册表中读取的吗?还是从为当前用户定义的环境变量中定义路径的目录中读取?还是从%APPDATA%\Cisco\...之类的用户帐户相关文件夹中读取?换句话说,包含vpn.myhost.com的.pcf 文件的存储位置以及vpncli期望该文件的位置是问题。 -
@Mofi,我找不到 .pcf 文件。在 Cisco 程序文件文件夹:
C:\Program Files (x86)\Cisco中,我只看到两个子文件夹,其中既不包含任何 pcf 文件,也不包含它们各自的子目录。这两个子目录是“Cisco AnyConnect VPN Client”和“Cisco AnyConnect Secure Mobility Client” -
嗯,*.pcf 文件肯定不在应用程序的程序文件文件夹中,因为该文件夹通常对任何标准用户都有写保护。我想它在我写的 application data 目录中。环境变量
APPDATA保存该文件夹的路径,该文件夹具有隐藏属性集。在命令提示符窗口dir /A-D /B /S C:\*.pcf中运行以在整个驱动器 C:上搜索扩展名为pcf的文件,包括隐藏文件夹和系统文件夹。 -
我运行了命令,但没有找到文件。另外,我已经多次阅读了您在下面回答中的第一点。在尝试在脚本中设置 VPN 连接之前,我执行了
net stop vpnagent和net start vpnagent。另外,我需要运行这个任务whether or not the user is logged in。到目前为止,我已经能够以“管理员”组的身份执行此任务。如果我创建本地管理员并将这个新创建的用户添加到“管理员”组,它将无法成功运行。
标签: batch-file scheduled-tasks