10 удобных методов получения вашего общедоступного IP-адреса в PowerShell

Привет, ребята! Сегодня мы погрузимся в захватывающий мир PowerShell и рассмотрим несколько изящных методов получения вашего общедоступного IP-адреса. Итак, берите свой любимый напиток, садитесь поудобнее и начнем!

  1. Invoke-WebRequest:
    Один из самых простых способов получить общедоступный IP-адрес — использовать командлет Invoke-WebRequest. Вот простой пример:

    $ipAddress = (Invoke-WebRequest -Uri 'https://icanhazip.com').Content.Trim()

    Этот метод отправляет запрос на веб-сайт «icanhazip.com» и извлекает IP-адрес из ответа.

  2. Get-Content:
    Другой подход — использовать командлет Get-Contentдля чтения HTML-содержимого веб-сайта и извлечения IP-адреса. Вот пример использования «icanhazip.com»:

    $ipAddress = (Get-Content -Uri 'https://icanhazip.com').Trim()

    Этот метод получает IP-адрес непосредственно из ответа HTML.

  3. cURL:
    Если в вашей системе установлен cURL, вы также можете использовать его для получения своего общедоступного IP-адреса. Вот как это можно сделать:

    $ipAddress = (curl -s 'https://icanhazip.com').Trim()

    Флаг -sобеспечивает автоматическое выполнение, а IP-адрес извлекается из ответа.

  4. Однострочник PowerShell:
    Для быстрого и краткого подхода вы можете использовать однострочник PowerShell, чтобы получить свой IP-адрес:

    $ipAddress = (iwr 'https://icanhazip.com').Content.Trim()

    Этот метод аналогичен первому подходу, но имеет более короткий синтаксис.

  5. WebClient:
    Класс WebClientпредлагает другой способ получения вашего IP-адреса. Вот пример:

    $webClient = New-Object System.Net.WebClient
    $ipAddress = $webClient.DownloadString('https://icanhazip.com').Trim()

    Этот метод создает новый объект WebClientи использует его для загрузки IP-адреса с веб-сайта.

  6. System.Net.Http.HttpClient:
    Если вы работаете с более новыми версиями PowerShell, вы можете использовать класс System.Net.Http.HttpClient. Вот пример:

    $httpClient = New-Object System.Net.Http.HttpClient
    $response = $httpClient.GetAsync('https://icanhazip.com').Result
    $ipAddress = $response.Content.ReadAsStringAsync().Result.Trim()

    Этот метод использует класс HttpClientдля отправки асинхронного запроса GET и получения IP-адреса из ответа.

  7. System.Net.Sockets.TcpClient:
    Для другого подхода вы можете использовать класс System.Net.Sockets.TcpClient, чтобы установить соединение и получить свой IP-адрес. Вот пример:

    $tcpClient = New-Object System.Net.Sockets.TcpClient('icanhazip.com', 80)
    $ipAddress = $tcpClient.Client.LocalEndPoint.Address.ToString()
    $tcpClient.Close()

    Этот метод устанавливает TCP-соединение с «icanhazip.com» через порт 80 и получает локальный IP-адрес.

  8. REST API.
    Некоторые веб-сайты предоставляют специальную конечную точку REST API для получения вашего IP-адреса. Вот пример использования ipify.org:

    $ipAddress = (Invoke-WebRequest -Uri 'https://api.ipify.org').Content.Trim()

    Этот метод отправляет запрос к API ipify.org и извлекает IP-адрес из ответа.

  9. Разрешение DNS.
    Вы также можете разрешить имя хоста известной службы, например «icanhazip.com», чтобы получить свой IP-адрес. Вот пример:

    $ipAddress = [System.Net.Dns]::GetHostAddresses('icanhazip.com')[0].ToString()

    Этот метод использует метод GetHostAddressesиз класса System.Net.Dnsдля определения IP-адреса.

  10. Встроенная команда Windows:
    Если вы предпочитаете использовать встроенные команды Windows, вы можете использовать nslookupдля получения вашего IP-адреса. Вот пример:

    $ipAddress = (nslookup myip.opendns.com resolver1.opendns.com | Select-String 'Address: (\d+\.){3}\d+').Matches.Value -replace 'Address: '

    Этот метод использует nslookupдля запроса «myip.opendns.com» через преобразователь «resolver1.opendns.com» и извлекает IP-адрес из ответа.

Вот и все! Десять различных методов получения вашего общедоступного IP-адреса в PowerShell. Не стесняйтесь экспериментировать с ними и выбирайте тот, который соответствует вашим потребностям. Удачных сценариев!