我知道我可以创建一个批处理文件来启动 VPN 连接,然后启动 RDP 会话,但是我想知道是否有可能(在 Windows 7 中,理想情况下在 Windows XP 中)将 VPN 连接与 RDP 会话状态绑定在一起。
场景:用户必须先使用 VPN 才能使用 RDP。理想情况下,用户单击一个图标(批处理文件?)即可启动 VPN 连接并加载 RDP 会话。当他们关闭 RDP 会话时,我希望 VPN 自动断开连接,这样他们就不会意外地通过 VPN 路由其后续的非 RDP 浏览 + 互联网活动。
答案1
我意识到这个问题很老了,但我想我会为偶然发现这个问题的人添加一种方法。
@echo off
:: Connecting to VPN...
rasdial "VPN Name" user pass
echo Running RDP...
"Connect to Server.rdp"
echo Finished - disconnecting from VPN...
rasdial "VPN Name" /disconnect
Rasdial 是 Windows 的内置功能,用于连接和断开连接。将“VPN 名称”替换为您在设置 VPN 连接时所起的名称。将第一行中的“user”和“pass”替换为连接到 VPN 的实际用户名和密码(即使您选择在创建 VPN 时保存凭据,Rasdial 也要求您输入它们)。
由于批处理脚本同步运行,rasdial 将在打开 RDP 文件之前完成与 VPN 的连接,并且在 RDP 会话打开的整个过程中,批处理脚本将一直等待。一旦 RDP 会话关闭,将运行最终命令以断开 VPN。很简单!
我倾向于在桌面上放置批处理脚本的快捷方式,并将其图标更改为普通的 RDP 图标(来自 C:\Windows\System32\mstsc.exe)。如果您不希望用户看到 cmd 窗口,您可以选择最小化启动脚本,但我喜欢让它可见,这样他们就可以看到连接到 VPN 时是否有任何错误。
答案2
我可以在 Windows 10 上使用@Gechurch 的答案,只需将其更改rasdial
为rasphone
如下方式:
@echo off
:: Connecting to VPN...
rasphone.exe -d "My VPN"
echo Running RDP...
"Remote Server.rdp"
echo Finished - disconnecting from VPN...
rasphone.exe -h "My VPN"
答案3
如果您有独立的 VPN 客户端程序(例如 Cisco AnyConnect),请使用 Google 查找该产品的命令行选项,看看是否可以使用单个命令进行连接。例如:AnyConnect, 这通用思科客户端,以及Windows VPN 客户端都支持此功能。但是,这可能需要您将密码以明文形式存储在批处理文件或脚本中。
一旦你获得了这些信息,写一个批处理文件调用 VPN 客户端,可能睡觉几秒钟确保 VPN 连接良好,然后从命令行调用远程桌面客户端。
如果您想要真正花哨一点,而不是通过睡眠来验证连接,您可以 ping 一些只能通过 VPN 访问的资源,如果 ping 不成功,则让脚本返回错误。
取出您的批处理文件,将其(或快捷方式)放在您的桌面或任何地方,然后您只需单击一下“连接到 VPN 然后打开远程桌面”应用程序。
另一方面,如果你的 VPN 客户端无法通过命令行连接,我会研究一下汽车信息技术或其他鼠标/键盘宏脚本语言,看看是否可以自动化 VPN 连接。