Эквивалент IPConfig в PowerShell
IPconfig, вероятно, моя самая используемая утилита CMD. Это здорово. Нужен IP-адрес? Просто откройте окно командной строки (для этого нажмите Win+x и выберите «Windows PowerShell»), введите
ipconfig
нажмите Enter, и всё готово.
Если вам нужна дополнительная информация, например маска подсети и шлюз по умолчанию, просто используйте
ipconfig /all
и вы мгновенно получите всю необходимую информацию.
Конечно, есть и другие методы, которые можно использовать для получения IP-адреса компьютера. Вы можете проверить аренду адресов на своём DHCP-сервере или проверить записи на своём DNS-сервере. Вы можете проверить настройки конфигурации сети на панели управления. Даже со всеми этими различными способами получения IP-адреса ipconfig по-прежнему остаётся популярной утилитой.
Использование IPConfig в PowerShell
Команды CMD работают и в PowerShell. То есть в PowerShell вы по-прежнему можете использовать ipconfig.
Эквивалент IPConfig в PowerShell — это Get-NetIPConfiguration и Get-NetIPAddress
Давайте сначала посмотрим на вариант PowerShell, который больше всего соответствует функциональности и результатам IPConfig, это Get-NetIPConfiguration.
Вот сравнение данных, возвращаемых с помощью IPConfig, с данными, возвращаемыми с помощью Get-NetIPConfiguration.
Как сказано в описании, Get-NetIPConfiguration возвращает сетевую конфигурацию, включая используемые интерфейсы, IP-адреса и DNS-серверы. Эта команда сама по себе вернёт все невиртуальные подключённые интерфейсы на компьютере. Если вы хотите вернуть виртуальные интерфейсы, вам нужно будет включить параметр -All.
Теперь давайте посмотрим на командлет Get-NetIPAddress, который возвращает данные конфигурации IPv4 и IPv6 и информацию об интерфейсах, с которыми связаны эти адреса.
Командлет Get-NetIPAddress получает конфигурацию IP-адреса, например IPv4-адреса, IPv6-адреса и IP-интерфейсы, с которыми связаны адреса. Без параметров этот командлет получает полную конфигурацию IP-адреса компьютера.
Вот сравнение возвращённых данных.
Обратите внимание, что командлет PowerShell вернул гораздо больше информации об IP-адресах, связанных с ними устройствами, даже включая петлевой адрес (loopback) и адрес localhost. Все возвращаемые данные не поместились на одном экране, но вы можете получить эту информацию в гораздо более удобоваримом формате.
Примеры Get-NetIPConfiguration и Get-NetIPAddress
Вооружившись этими новыми знаниями PowerShell, давайте рассмотрим несколько практических примеров и вариантов использования.
Пример использования Get-NetIPConfiguration:
Get-NetIPConfiguration | Select-Object -Property IPv4Address
В этом примере возвращается только IPv4-адрес локального компьютера. Поскольку обычно ищут IPv4-адрес, когда запускают эту команду, то это удобный способ отбросить ненужные данные и получить только свойство IPv4-адреса. Чтобы понять, как работает эта команда, давайте сначала поговорим о символе «|». Этот символ представляет собой вертикальную черту или трубу. Этот символ позволяет передавать результаты от одного командлета к другому. В этом случае мы передаём результаты Get-NetIPConfiguration в командлет Select-Object. Командлет Select-Object позволяет выбирать определённые свойства объекта. Я использовал параметр -Property для таргетинга только на свойство IPv4Address.
Пример 2 использования Get-NetIPConfiguration:
Get-NetIPConfiguration -Computer "Win-Server-Core" | Select-Object -Property IPv4Address
В этом примере возвращается IPv4Address удалённого компьютера. Мы используем параметр -Computer для указания удалённого хоста. Чтобы этот пример работал, необходимо убедиться, что удалённое взаимодействие PowerShell включено.
Пример использования Get-NetIPAddress:
Get-NetIPAddress | Format-Table
Как я упоминал ранее, Get-NetIPAddress может возвращать большой объем информации, причём не в удобном для чтения формате. Чтобы решить эту проблему, мы можем передать результаты командлета Get-NetIPAddress командлету Format-Table, который, как следует из названия, отобразит полученные данные в формате таблицы, удобной для восприятия. Напоминаем, что как только вы отформатируете эти данные в таблицу, вы больше не сможете с ними взаимодействовать.
Пример 2 использования Get-NetIPAddress:
$list = "computer1", "computer2", "computer3" $Array = New-Object System.Collections.ArrayList Foreach ($Machine in $list){ $result = Get-NetIPAddress -CimSession $Machine -PrefixOrigin Dhcp $Array.Add($result) | Out-Null } $Array | Select PSComputerName, IPAddress
Этот пример выводит нас на следующий уровень, так что давайте присмотримся к нему получше и разберёмся, что именно в нём происходит.
Сначала мы назначаем три компьютера переменной $list. Затем мы создаём переменную с именем $Array и настраиваем её как объект массива с помощью New-Object System.Collections.ArrayList. Затем мы запускаем наш цикл Foreach, который будет использовать переменную-заполнитель с именем $Machine, чтобы содержать отдельный элемент из переменной $list во время выполнения цикла. Затем мы создаём переменную с именем $result, которая будет содержать результаты командлета Get-NetIPAddress. Мы добавили параметр -CimSession, который будет подключаться к удалённому компьютеру, который в настоящее время назначен переменной-заполнителю $Machine. Мы использовали параметр -PrefixOrigin, чтобы выделить только IP-адреса с префиксом происхождения Dhcp. Затем мы добавляем переменную $result в $Array с помощью $Array.Add($result) и направляем её в Out-Null, чтобы остановить вывод массива при назначении результатов. Наконец, мы вызываем массив, чтобы показать результирующие данные, но указываем отображать только PSComputerName и IPAddress, чтобы наши результаты были красивыми и чистыми.
Этот сценарий довольно универсален, и его можно легко изменить, чтобы он возвращал IP-адреса всех компьютеров в указанном подразделении, а не просто вводил имена компьютеров вручную. В качестве предостережения, если вы запустите этот сценарий на компьютере, который не подключён к сети, будет выдана ошибка, но сценарий продолжит работу. Конечным результатом будет дублирующаяся запись в массиве.
Связанные статьи:
- Как в PowerShell установить IP, маску сети, шлюз по умолчанию и DNS для сетевого интерфейса (76.4%)
- Как в PowerShell настроить сетевой интерфейс на использование динамичного IP адреса (DHCP) (76.4%)
- Как в PowerShell просмотреть открытые порты. Как узнать, какая программа прослушивает порт (64.6%)
- Как в PowerShell просмотреть открытые порты UDP (64.6%)
- Test-NetConnection: сканирование открытых/закрытых портов из PowerShell (56.8%)
- Как настроить Windows Server 2022 с помощью PowerShell (RANDOM - 50%)