我需要让分支机构的一台计算机自动连接到公司 VPN,以简化登录过程(不强迫用户按右下角的网络登录)。
客户端机器是 Windows 8.1 机器,VPN 是标准 PPTP 隧道。
答案1
找到了这个解决方案这里。
- 打开任务计划程序 (搜索任务计划程序)
- 点击创建任务在里面动作面板在右侧
- 常规选项卡
- 为任务提供一个逻辑名称,例如自动 VPN
- 切换正在运行的任务模式为无论用户是否登录都运行
- 启用使用最高权限选项运行
- 更改配置为:下拉至Windows 10
- 触发器选项卡
- 点击新的...按钮
- 改变开始任务:到启动时
- (可选)启用延迟任务并设置为 5 分钟。这让慢速机器在启动 VPN 之前有机会闲置一段时间。
- 操作选项卡
- 点击新的...按钮
- 输入
c:\windows\system32\rasdial.exe
程序/脚本:字段。如果您不想输入该字段或者您的默认 Windows 安装目录不同,您也可以浏览到该字段。 - 键入连接名称在里面添加参数字段。
rasdial.exe
需要您包装连接名称如果有空格,请用引号引起来。您可能还需要附加连接的用户名和密码以及域名(如果需要),像这样:"VPN Connection Name" username password /domain:domainname
。 - 条件选项卡
- 取消选中所有选项在条件选项卡上。
- “设置”选项卡
- (可选)启用“如果任务失败,则每隔:重新启动一次”并设置为适当的值。我将其设置为 1 小时,以防 VPN 服务器端出现问题。
- (可选)将“尝试重启次数:”值设置为可接受的数字。我的默认值是 72 次,间隔 1 小时。这涵盖了长周末。
- 保存新任务
答案2
Mikael 接受的答案很棒,除了 5.3 中的纯文本密码,这让我感到不安。我的 VPN 连接(通过 IKEv2)的工作方式是,rasdial 不需要用户名和密码作为参数。
但如果你的情况不同,有办法避免在脚本中使用纯文本密码:
本文讲解如何使用 Powershell 加密和保存文本:https://www.pdq.com/blog/secure-password-with-powershell-encrypting-credentials-part-1/
总结一下:使用 ConvertTo-SecureString 函数,您可以这样加密文本,只有同一台机器上的同一用户(在同一个用户下运行的进程)才能解密它。虽然不是完全安全的,但比纯文本要好。用于加密并将“MyP@ssword1”保存到文件的 powershell 命令如下:
"MyP@ssword1" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\path to\your\Password.txt"
在这里您将再次找到如何读取和解密密码: https://stackoverflow.com/a/19950628/4602253
答案3
只需创建 .bat 文件
c:\windows\system32\rasdial.exe "VPN Connection Name" [username] [password] [/domain:domainname]
并将创建的文件的快捷方式创建到 WINDOWS_KEY+R: shell:startup 文件夹中