我正在尝试批量重命名 Windows 8.1 计算机上的 VPN 连接。我可以轻松使用 修改服务器地址Set-VpnConnection
,但我找不到重命名 VPN 连接的方法:
首先,没有Rename-VpnConnection
cmdlet,我不知道如何使用Rename-Item
Vpn 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"
- 您可以在这里找到更多将一个字符串更改为另一个字符串的不同方法:https://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the-windows-command-line-envir
- 请记住,您需要重新启动资源管理器才能应用更改。
答案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