我发现了一个article,它列出了几种检测活动VPN的方法:
Get-WmiObject -Query "Select * from Win32_NetworkAdapter
where Name like '%VPN%' and NetEnabled='True'"
Get-WmiObject -Query "Select * from Win32_NetworkAdapterConfiguration
where Description like '%VPN%' and IPEnabled='True'"
ipconfig | Select-String 'PPP adapter'
Get-WmiObject -Query "Select * from Win32_IP4RouteTable
where Name like '10.0.99.%' or Name like '10.15.99.%'"
在我的情况下,方法1,2和4根本不起作用。第三种方法运作良好,这已经足够了。但据我所知,配置多个VPN连接可能会给方法3带来模糊的结果。
所以我的问题是:
$adapters = (Get-WmiObject -Query "Select * from Win32_NetworkAdapter")
foreach($a in $adapters) {
Write-Host $a.Description
}
给我一个适配器名称列表,其描述中没有提到“VPN”:
WAN Miniport(SSTP)WAN Miniport(IKEv2)WAN Miniport(L2TP)WAN Miniport(PPTP)等......最简单的方法是使用Powershell Commamdlet
Get-VPNconnection -Name "VPN Name"
报告的其中一个项目是“ConnectionStatus”。此外,如果VPN是All用户连接,您还必须使用带有命令行开关的开关“-AllUserConnection”