Эквивалент 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-адреса всех компьютеров в указанном подразделении, а не просто вводил имена компьютеров вручную. В качестве предостережения, если вы запустите этот сценарий на компьютере, который не подключён к сети, будет выдана ошибка, но сценарий продолжит работу. Конечным результатом будет дублирующаяся запись в массиве.

Рекомендуется Вам:

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

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