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'}
过滤时,我得到了预期的结果。
有谁知道为什么会这样??
这是因为 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}