通过IPv4Address过滤时,Get-ADComputer返回NULL

时间:2016-03-21 13:15:16

标签: powershell

我试图在我的网络中列出计算机,并确定哪些在域中,哪些不在。

以下是代码的摘录:

$ipName ="10.0.0.$i"
$myPC = $NULL
$myPC = Get-ADComputer -property * -filter {IPv4Address -eq $ipName}  

但是大部分时间它都没有返回任何内容(尽管有一些IP可以正常工作),即使我按照计算机名称进行过滤,我也会得到具有相同IPv4Address属性的计算机。

所以例如

 Get-ADComputer -properties * -filter {IPv4Address -eq "10.0.0.138"}   

返回$ NULL,
但同时

Get-ADComputer -properties * -filter {Name -eq "KNP"} 

返回所有属性,包括

 IPv4Address        : 10.0.0.138

提前致谢

1 个答案:

答案 0 :(得分:0)

我首先要确保它与你想象的匹配使用Where-Object。

Get-ADComputer -Properties * -Filter * | Where-Object {$_.IPv4Address -eq '10.0.0.138'}

如果这会带回您期望的计算机,那么AD提供商的搜索语法会发生一些变化。各种cmdlet的-Filter参数使用不同的提供程序。在这种情况下,它是Active Directory。

如果您查看过滤器本身的帮助,它有很多关于如何构建过滤器的有用信息。

get-help about_ActiveDirectory_Filter