Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 359.00:00:00 -Searchbase "OU=Disabled Computers,DC=mydomain,DC=net"
使用Where {$_.enabled -eq 'false'}
过滤上一个脚本时,我没有得到任何结果。
但是当使用Where {$_.enabled -ne 'true'}
过滤时,我会得到预期的结果。
任何人都知道为什么会这样?
答案 0 :(得分:1)
这是因为enabled
属性不是字符串False
。但是是一个布尔值,在显示时会被格式化为字符串。例如,如果您评估$false
,您将收到类似字符串False
的内容。但是,如果您评估$False | Get-Member
,您会看到TypeName: System.Boolean
这意味着您应该与$False
而不是"False"
$InactiveComputers = Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 359.00:00:00 -Searchbase "OU=Disabled Computers,DC=mydomain,DC=net"
#Displaying that enabled property is System.Boolean
$InactiveComputers[0].enabled | Get-Member
$InactiveComputers | Where {$_.enabled -eq $False}
编辑:
或者,通过切换比较的顺序,您可以动态地将$False
转换为字符串。这是"False" -eq $False
和$False -eq "False"
$InactiveComputers = Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 359.00:00:00 -Searchbase "OU=Disabled Computers,DC=mydomain,DC=net"
$InactiveComputers | Where {"False" -eq $_.enabled}