Powershell 如何检测具有特定名称的活动VPN连接
我找到了一个列表,其中列出了几种检测活动VPN的方法:Powershell 如何检测具有特定名称的活动VPN连接,powershell,powershell-2.0,vpn,windows-server-2008-r2,Powershell,Powershell 2.0,Vpn,Windows Server 2008 R2,我找到了一个列表,其中列出了几种检测活动VPN的方法: 使用Win32_NetworkAdapter: Get-WmiObject -Query "Select * from Win32_NetworkAdapter where Name like '%VPN%' and NetEnabled='True'" 使用Win32_网络适配器配置: Get-WmiObject -Query "Select * from Win32_NetworkAdapterConfiguration whe
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.%'"
$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)
and so on...
广域网微型端口(SSTP)
广域网微型端口(IKEv2)
广域网微型端口(L2TP)
广域网微型端口(PPTP)
等等
最简单的方法是使用Powershell Commamdlet
Get-VPNconnection -Name "VPN Name"
报告的项目之一是“连接状态”。此外,如果VPN是全用户连接,您还必须使用commandlet的交换机“-AllUserConnection”如何使用:
Get-NetAdapter -InterfaceDescription "VPN Name" | where {$_.status -eq "Up"}
只需使用
获取NetAdapter
获取网络/VPN名称列表。如果您还想获取PPP适配器和其他隐藏适配器信息,则应使用以下选项:
[System.Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces()
在我的场景中,
InterfaceDescription
属性中的TAP
表示VPN连接状态,但您可以在测试中放入任何字符串
$NIC = Get-NetIPConfiguration | ? {$_.NetAdapter.status -eq "UP"} | Select-Object InterfaceDescription
if ($NIC -match "TAP") {
#VPN active → go to work
} else {
Write-Host "~~~~~~~~~~~~~~~~~" -ForegroundColor Cyan
Write-Host "VPN DEACTIVATED ?" -ForegroundColor Cyan
Write-Host "~~~~~~~~~~~~~~~~~" -ForegroundColor Cyan
}
好的,你能在一台有两个活动VPN连接的PC上检查
ipconfig
的输出,以辨别它们是否有差异,并基于此进行过滤吗?在最坏的情况下,您将获得ppp适配器
2次,但我相信它们会有所不同,您可以找到一种过滤东西的方法