Сортировка ip-адресов

Feb 14, 2018 15:23

Иногда при работе с DHCP необходимо отсорировать список по IP-адресам. Кто пробовал, знают, что стандартная сортировка делает всё "неправильно". Например, из такого списка:

$ip = '10.11.12.13
10.11.102.3
10.11.10.222
10.11.10.11' -split "`n"

$ip

Получается не по порядку:
10.11.12.13
10.11.102.3
10.11.10.222
10.11.10.11

Как видите, в случае с IP-адресами сортировка работает некорректно. Простой способ это исправить это привести IP-адрес к типу System.Version (ведь IP-адрес похож на номер версии, разделённый точками), в котором реализован правильный для такого формата метод сравнения (CompareTo). Таким образом, получаем код:

$ip | sort { [Version]$_ }

И корректный результат сортировки:
10.11.10.11
10.11.10.222
10.11.12.13
10.11.102.3

Таким образом, чтобы получить список резерваций с сервера с корректной сортировкой используем следующий код:

PS C:\> Get-DhcpServerv4Reservation -ComputerName server -ScopeId 10.1.1.0 | sort { [System.Version]([string]($_.IPAddress)) }

powershell, dhcp, ip

Previous post Next post
Up