按空IP地址进行过滤有什么区别?

时间:2019-03-22 07:36:05

标签: powershell active-directory

正如我警告我的那样,这很可能是重复的,但我没有在建议框中看到与我的问题类似的任何内容。这也很可能是一个非常简单的问题,但我真的不知道该如何向Google发送此类问题。之间有什么区别

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

并且:

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

对我来说,第一个有效,但第二个无效。错误指出“ $ null”尚未定义。我以为$ null随时可以在PowerShell中使用?有什么作用?

1 个答案:

答案 0 :(得分:1)

here所述,有两种方法来限制AD cmdlet的输出。
首先,您可以使用-LDAPFilter-Filter参数来过滤输出。其次,您可以将结果通过管道传递到Where-Object cmdlet。
在可能的情况下,第一种方法会更有效率,原因有两个:

  • 筛选是在域控制器而不是本地上完成的 客户。域控制器更可能是服务器类 针对查询进行了优化的计算机。

  • 过滤会导致较小的结果集通过网络从网络发送 客户端的域控制器。相反,Where-Object cmdlet仅在结果集完成后才在本地客户端上筛选 从远程计算机发送。

但是,当涉及到对Ip4Address进行过滤时,由于以下原因,我认为第二个示例不起作用:

对于IP地址(IPv4或IPv6),没有Active Directory计算机对象的属性。 Get-ADComputer cmdlet使用[System.Net.Dns]::GetHostEntry($Computer).AddressList从DNS检索地址,其中$ Computer是计算机的名称。这将返回一个IP地址数组,包括IPv4和IPv6。但是-IPv4Adress-IPv6Address属性仅返回一个(或不返回)。

Source