【问题标题】:Powershell to pull properties based on multiple criteriaPowershell 根据多个条件提取属性
【发布时间】:2023-02-25 05:16:50
【问题描述】:

我正在尝试获取未列出经理的 AD 用户列表以及自定义字段 usertype 中的员工值。

当我运行它时,它不会过滤但会给我所有帐户 - 用户、资源等。我可以将 usertype 或 manager 添加到选择字段并看到它没有正确拉动(manager 已填充或usertype不是员工)。

我需要更改什么才能获得正确的数据?

Get-ADUser -Filter * -Properties * |  Select Name, SamAccountName, Department 
where-object userType -eq 'Employee' -and Manager -eq $null

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    如果自定义 userType 属性是 indexed,那么在这两种情况下您都可以利用 Active Directory Filter

    Get-ADUser -LDAPFilter "(&(!manager=*)(userType=Employee))" -Properties Department |
        Select-Object Name, SamAccountName, Department
    

    简要说明 LDAP Filter 正在做什么:

    (&                       # AND, all conditions must be met
        (!manager=*)         # manager attribute is not populated
        (userType=Employee)  # usertype attribute is equal to "Employee"
    )                        # close then AND clause
    

    如果自定义属性未编入索引,则必须使用 PowerShell 完成过滤:

    Get-ADUser -LDAPFilter "(!manager=*)" -Properties Department, userType |
        Where-Object userType -EQ 'Employee' |
        Select-Object Name, SamAccountName, Department
    

    至于你的代码失败的原因,你在Select-Object语句之后缺少管道,当使用Where-Object过滤多个条件时,我们必须使用scriptblock。总之,以下会起作用(但比上面的例子慢很多)。

    Get-ADUser -Filter * -Properties Department, userType, Manager |
        Where-Object { $_.userType -eq 'Employee' -and -not $_.Manager } |
        Select-Object Name, SamAccountName, Department 
    

    【讨论】:

      【解决方案2】:

      在可能的情况下,先过滤。通常,以这种方式处理会更快、更容易。

      Get-AdUser -Filter 'userType -eq "Employee" -and Manager -notlike "*"' |
      Select-Object Name, SamAccountName, Department 
      

      如果 Manager 不支持使用 notlike 进行过滤,那么:

      Get-AdUser -Filter 'userType -eq "Employee"' -Properties Manager |
      Where-Object{-not [string]::IsNullOrEmpty($_.Manager)} |
      Select-Object Name, SamAccountName, Department 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-11
        • 2015-01-17
        • 2021-05-02
        • 2017-01-22
        • 2022-08-04
        • 2022-08-18
        相关资源
        最近更新 更多