通过 Powershell 重命名 VPN 连接

通过 Powershell 重命名 VPN 连接

我正在尝试批量重命名 Windows 8.1 计算机上的 VPN 连接。我可以轻松使用 修改服务器地址Set-VpnConnection,但我找不到重命名 VPN 连接的方法:

首先,没有Rename-VpnConnectioncmdlet,我不知道如何使用Rename-ItemVpn Connection 对象(如果它能工作的话);其次,我尝试使用ServerAddress而不是Name来识别 vpn 连接,但 powershell 告诉我这是不允许的;然后我尝试在参数后直接添加新名称,-Name如下所示:

Set-VpnConnection -Name "MyVPN" "New Name to MyVPN"

Powershell 默默地运行命令,没有错误,但根本没有效果。请告诉我这在 Powershell 中是否可以实现,如果不行,还有其他编程方式可以实现吗?谢谢!

答案1

Benny!我尝试使用 cmd、netsh、wmic 和 powershell 在 Windows 7 上重命名 VPN,我发现唯一简单的方法就是这种方法。

默认情况下,VPN 是一个扩展名为 .PBK 的 INI 文件,位于 C:\ProgramData\Microsoft\Network\Connections\Pbk

因此您可以使用 BAT 文件或 CMD 重命名它

powershell -Command "(gc C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk) -replace '[Old name]', '[New name]' | Out-File C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk"
taskkill /im "explorer.exe" /f
start "" "explorer.exe"

答案2

我无法找到在我的系统上测试 VPN cmdlet 的方法,但这里猜测一下如何通过变通方法实现最终结果,假设您执行 Get-VPNConnection 并过滤掉您想要重命名的连接的名称,然后将其通过管道传输到 Export-CSV 并将其保存到文件,编辑该文件并将名称字段更改为您想要的新名称,保存该文件,然后 Import-CSV 修改后的文件并将其通过管道传输到 Add-VPNConnection,就像我说的,这都是猜测,因为我无法测试它,但值得尝试,因为它不会花费太多时间,谢谢。

答案3

或者,您可以使用此代码,它不需要直接编辑 rasphone.pbk。从技术上讲,它会使用新名称创建连接的副本,然后删除旧连接,但结果是一样的。

$VpnName = "VPN name"
$VpnNameNew = "VPN new name"

#if all users connection
$VpnAllUser = Get-VPNConnection -alluserconnection -Name $VpnName
$VpnAllUser.Name = $VpnNameNew
$VpnAllUser | add-VPNConnection -AllUserConnection
Remove-VpnConnection -Name $VpnName -AllUserConnection

#if user connection
$Vpn = Get-VPNConnection -Name $VpnName
$Vpn.Name = $VpnNameNew
$Vpn | add-VPNConnection
Remove-VpnConnection -Name $VpnName

相关内容