Powershell: Скрипт добавления маршрута при установке VPN — соединения!

Скрипт, написанный на 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."
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *