Как описано здесь , существует два способа ограничения вывода командлета 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
свойствами.
Источник