Скрипт, написанный на PowerShell, получает IP адрес по DNS-имени вашего ресурса, активирует VPN-соединение и добавляет маршрут к указанному IP-адресу в VPN. Таким образом, вы можете безопасно и защищенно обращаться к вашему ресурсу через VPN-соединение.
Простота использования скрипта позволяет быстро настроить соединение и добавить необходимый маршрут. Нужно только указать DNS-имя вашего ресурса и имя VPN-соединения в соответствующих переменных скрипта. Так же для ограничения времени выполнения скрипта, добавлен таймаут по истечении которого скрипт автоматически завершится!
Для запуска скрипта можно использовать cmd-файл с содержимым:
powershell -ExecutionPolicy Bypass -File "C:\VPN\VPN.ps1"
Powershell:
#*********************
$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."
}