筛选已启用的计算机帐户奇数结果的Powershell脚本


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}

最新更新