Скрипт, написанный на PowerShell, получает IP адрес по DNS-имени вашего ресурса, активирует VPN-соединение и добавляет маршрут к указанному IP-адресу в VPN. Таким образом, вы можете безопасно и защищенно обращаться к вашему ресурсу через VPN-соединение.
Простота использования скрипта позволяет быстро настроить соединение и добавить необходимый маршрут. Нужно только указать DNS-имя вашего ресурса и имя VPN-соединения в соответствующих переменных скрипта. Так же для ограничения времени выполнения скрипта, добавлен таймаут по истечении которого скрипт автоматически завершится!
Для запуска скрипта можно использовать cmd-файл с содержимым:
1 |
powershell -ExecutionPolicy Bypass -File "C:\VPN\VPN.ps1" |
Powershell:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#********************* $dnsName = "SiteName.ru" # Замените на нужное DNS-имя ресурса $vpnConnectionName = "Test" # Замените на имя вашего VPN-соединения $timeout = 30 # Установите желаемый таймаут в секундах #********************* # Получение IP-адреса по DNS-имени $ipAddress = Resolve-DnsName -Name $dnsName | Select-Object -ExpandProperty IPAddress $IPMasks = $ipAddress + "/32" if ($ipAddress) { # Активация VPN-соединения if ((Get-VpnConnection -Name $vpnConnectionName).ConnectionStatus -ne 'Connected') { Write-Host "Активация VPN-соединения..." Invoke-Expression "rasphone -d '$vpnConnectionName'" # Ожидание установки соединения с таймаутом $elapsedTime = 0 while ((Get-VpnConnection -Name $vpnConnectionName).ConnectionStatus -ne 'Connected' -and $elapsedTime -lt $timeout) { Write-Host "Ожидание установки соединения..." Start-Sleep -Seconds 1 $elapsedTime++ } if ($elapsedTime -ge $timeout) { Write-Host "Таймаут ожидания установки соединения превышен." exit } } # Добавление IP-адреса в маршрут VPN Write-Host "Добавление IP-адреса $ipAddress в маршрут VPN..." Add-VpnConnectionRoute -ConnectionName $vpnConnectionName -DestinationPrefix $IPMasks -PassThru Write-Host "Маршрут к DNS-имени $dnsName с IP-адресом $ipAddress добавлен в VPN." } else { Write-Host "Не удалось получить IP-адрес для DNS-имени $dnsName." } |