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