Как вы обнаружили, AddressFamily
классифицируется внутренне с использованием (неочевидной) схемы нумерации, где адреса IPv4 имеют тип '2'. Это происходит из базового типа WMI ( MSFT_DNSClientServerAddress ) и не является проблемой с PowerShell.
Дисплей по умолчанию поможет вам, переведя его в IPv4
и т. Д., Но вы не можете фильтровать его, так как он предназначен только для отображения. Однако вы все равно можете фильтровать, если используете правильное значение:
Get-DnsClientServerAddress | Where-Object AddressFamily -Like 2
Это форматирование данных для целей отображения происходит постоянно в PowerShell и доступно через Format.ps1xml файлы. Например, сравните вывод значений рабочего набора из Get-Process
в виде таблицы и списка:
PS C:\> Get-Process powershell
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
662 31 97928 110256 1.27 11452 2 powershell
PS C:\> Get-Process powershell | Format-List *
Handles : 705
VM : 2204040044544
WS : 113082368
PM : 100356096
NPM : 31512
Свойство (само добавленное PowerShell для удобства) называется WS
, но в таблице отображается как WS(K)
, а фактическое значение хранится в байтах, но отображается в КБ, поэтому некоторые манипуляции продолжаются для вывода по умолчанию.