В чем разница при фильтрации по нулевому IP-адресу? - PullRequest
0 голосов
/ 22 марта 2019

Это вполне может быть дубликатом, как меня предупредил ТАК, но я не увидел в окне для предложений ничего похожего на мой вопрос. Возможно, это очень простой вопрос, но я не знаю, как Google подобного рода вопросы. В чем разница между:

Get-ADComputer -properties ipv4address -filter * | ? ipv4Address -ne $null

И

Get-ADComputer -properties ipv4address -filter {ipv4Address -ne $null}

Для меня первый работает, а второй нет. Ошибка из-за того, что $ null не был определен. Я думал, что $ null всегда был готов к использованию в PowerShell? Что дает?

1 Ответ

1 голос
/ 22 марта 2019

Как описано здесь , существует два способа ограничения вывода командлета AD.
Во-первых, вы можете использовать параметры -LDAPFilter или -Filter для фильтрации вывода.Во-вторых, вы можете направить результаты в командлет Where-Object.
Где это возможно, первый метод более эффективен по двум причинам:

  • Вместо этого на контроллере домена выполняется фильтрацияместного клиента.Контроллер домена, скорее всего, будет компьютер класса сервера, оптимизированный для запросов.

  • Фильтрация приводит к уменьшению набора результатов, отправляемого по сети от контроллера домена клиенту.С другой стороны, командлет Where-Object фильтрует только на локальном клиенте после отправки набора результатов с удаленного компьютера.

Однако, когда дело доходит до фильтрации по Ip4Address, я думаю, чтоВторой пример не работает из-за этого:

Нет атрибута объектов компьютера Active Directory для IP-адресов, будь то IPv4 или IPv6.Командлет Get-ADComputer извлекает адреса из DNS, используя [System.Net.Dns]::GetHostEntry($Computer).AddressList, где $ Computer - это имя компьютера.Это возвращает массив IP-адресов, как IPv4, так и IPv6.Но только один (или ни один) из каждого возвращается либо -IPv4Adress, либо -IPv6Address свойствами.

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...