You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中AD用户enabled字段布尔值统计异常排查

问题原因分析
  1. Where-Object语法错误:你使用的[String]enabled -eq 'True'是错误写法——这里的[String]是试图将属性名enabled转换为字符串,而非对属性值做类型转换。这种写法会导致PowerShell无法正确识别要筛选的属性值,进而出现统计空值或计数错误的情况。
  2. 不必要的类型转换干扰:虽然你已经将AD用户的Enabled属性转换为布尔类型,但后续筛选时强行转字符串比较,反而破坏了布尔值的原生比较逻辑,导致匹配失败。
解决方法

方法1:修正布尔值筛选逻辑

直接针对布尔类型的enabled属性进行比较,无需转换为字符串,两种简洁写法可选:

  • 显式比较:$_.enabled -eq $true
  • 利用布尔值本身作为筛选条件:Where-Object enabled(仅保留enabled为$true的项)

方法2:用Measure-Object高效统计(推荐)

相比Where-Object后取Count,Measure-Object可以直接对布尔属性求和(True=1,False=0),效率更高且逻辑更清晰。

修正后的完整代码
$filter = "(&(objectClass=user)(objectCategory=person))"
$params = @{
    "Properties" = "userprincipalname", "whenCreated","physicaldeliveryofficename","o"
}

$adPath = "OU=Users,DC=site,DC=org,"

$now=Get-Date
$endDate = Get-Date -Day 15 -Month $now.Month -Year $now.Year -Hour 0 -Minute 0 -Second 0
$startDate = $endDate.AddMonths(-1)

$users = Get-ADUser -LDAPFilter $filter -SearchBase $adPath @params 

$u = [System.Collections.Generic.List[psobject]]::New()

$users | ForEach-Object {
    $n = $false
    if ($_.whenCreated -ne $null -and $_.whenCreated -ge $startDate -and $_.whenCreated -le $endDate){
        $n = $true
    }

    $x = [pscustomobject]@{
        enabled = [System.Convert]::ToBoolean($_.Enabled)
        o = [String]$_.o
        new = $n
     }

    $u.Add($x)
}

# 采用Measure-Object实现高效统计
$u | Group o | Sort Count -Descending | Select Name, 
    @{Name='Enabled';Expression={($_.Group | Measure-Object -Property enabled -Sum).Sum}}, 
    @{Name='New';Expression={($_.Group | Where-Object new).Count}}, 
    @{Name='Total';Expression={$_.Count}}, 
    Group

代码说明

  • Enabled统计:Measure-Object -Property enabled -Sum自动将True视为1、False视为0,求和结果即为启用用户的数量,彻底避免语法错误。
  • New统计:Where-Object new等价于Where-Object { $_.new -eq $true },写法更简洁直观。
验证结果

修正后,示例中ABCD分组的Enabled字段会正确返回1,与实际数据匹配。

内容的提问来源于stack exchange,提问作者Phaelax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:42:06