我正在尝试在 W10 上在 VPN 连接成功后执行自动“路由”命令。我根据这个简短的描述尝试了它这里它适用于 W7,但看起来非常相似,但我无法让它工作。
- 我的 VPN 连接正常。它随时可以连接和断开,没有任何问题。
- 我的路由命令没问题。如果我在连接 VPN 后手动启动它,一切正常。
- 当然,我的 VPN 连接不使用远程网关作为默认网关。我想进行“拆分隧道”。
我调查了一下,Windows 事件 20225 在 W10 上仍然相同(RAS 连接建立)。所以这是正确的……为什么不触发路由命令?连接 VPN 后,我可以在应用程序事件查看器中看到以 RasClient 为源的 20225 事件。
当然,在尝试所有这些方法之前,我尝试使用-p
路由命令上的参数“持久地”创建路由,但它不起作用,因为每次启动时添加此路由时 VPN 接口都不存在,所以这不是一个有效的选项。所以必须安排。
我使用提升的权限执行了该任务,结果相同,并且还选中了“使用提升的权限执行”复选框。该任务显示为“从未启动”。如果我尝试手动启动它,它会显示“任务计划程序服务不可用。任务计划程序将尝试重新连接到它”。但任务计划程序工作正常,其他任务可以手动安排或执行,并且它们正在运行。
有人成功实现了这个目标吗?
编辑 我尝试将触发器部分从“基本”改为“自定义”,并在 XML 字段中放置一个 XPath 过滤器以尝试搜索事件 ID:
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[(EventID=20225)]]</Select>
</Query>
</QueryList>
但两者都不起作用。
问题是一样的。任务显示为“从未启动”。
编辑2 我在事件查看器中注意到,在成功完成 VPN 连接(ID 20225)后,总会有另一个可能相关的事件(ID 900)...也许一切都已设置好,但有东西阻止了触发器...我不知道。请看此屏幕截图(抱歉,屏幕截图是西班牙语):
答案1
在 Win 10 上,电源外壳有一个可用的 cmdlet,可以在 VPN 连接上添加路由,并在 VPN 断开连接时再次删除它们:添加 VpnConnectionRoute. 无需指定接口 ID 即可工作。
基本语法如下:
Add-VpnConnectionRoute -ConnectionName "VPN 连接名称" -DestinationPrefix 10.0.0.0/16
输入该命令后,在VPN连接/断开连接时将自动创建/删除路由。
答案2
最后我还是没能让它工作……所以,我遗憾地决定寻找一个替代方案。我使用 rasdial 制作了一个批处理文件,它工作得很好。唯一的“问题”是路由命令需要以提升的权限启动。那是因为我将一个runas
带有/savedcred
参数的命令放在了一起,它只会要求输入一次密码,然后它就会自动工作。然后,对于 vpn,您可以输入您的密码(以明文形式!)或set mypass="*"
每次都要求输入密码。
这是我的代码:
@echo off
cls
echo.
REM put your VPN connection name here
set myvpn="Your VPN name"
REM put your user here
set myuser="foo"
REM put your pass here. Leave * for asking
set mypass="testpass"
REM put your win admin user here
set winadmin="administrator"
REM put your network route here
set network="192.168.8.0"
REM put your network mask here
set mask="255.255.255.0"
REM put your gateway mask here
set gateway="192.168.1.1"
ipconfig | find /i %myvpn% > nul 2>&1
if %ERRORLEVEL% == 0 (
echo "VPN already connected. Disconnecting..."
echo.
rasdial %myvpn% /disconnect
runas.exe /user:%winadmin% /savedcred "route delete %network% mask %mask% %gateway%"
) else if %ERRORLEVEL% == 1 (
echo "VPN not connected. Connecting..."
echo.
rasdial %myvpn% %myuser% %mypass%
runas.exe /user:%winadmin% /savedcred "route add %network% mask %mask% %gateway%"
)
我希望这对某人有帮助。