【问题标题】:Get-ADUser filter out specific OU, custom columnGet-ADUser 过滤掉特定的OU,自定义列
【发布时间】:2015-08-03 15:04:05
【问题描述】:

正在尝试获取活动用户的审核报告。我们有一个我不想报告的 OU。

给我所有活动(启用)的 AD 帐户。特定 OU 中的除外。

Get-ADUser -Filter{enabled -eq $true} | Select-object Samaccountname,surname,givenname `
        | Export-Csv -NoTypeInformation C:\scripts\ActiveUsers.csv

如何过滤掉OU=Service Accounts

我还需要在 csv 输出的 A 列中有一个自定义列。 示例:所有行中 A 列中的单词“ACME”。

非常感谢 以斯帖

【问题讨论】:

    标签: powershell csv ou


    【解决方案1】:

    过滤父容器

    OU 是对象的DistinguishedName 属性的一部分。

    通过删除DistinguishedName 的第一部分并将其余部分与OU 的DistinguishedName 进行比较,使用Where-Object 过滤掉驻留在某个OU 内的对象:

    $OUDN = "OU=Service Accounts,OU=Accounts,DC=domain,DC=tld"
    Get-ADUser -Filter {Enabled -eq $true} | Where-Object { $_.DistinguishedName -notlike "*,$OUDN" }
    

    如果您知道 OU 名称,但不知道完整的 DistinguishedName,则可以通过将可分辨名称拆分为隔间并将第二个(直接父容器)与您要排除的名称:

    $OUName = "Service Accounts"
    Get-ADUser -Filter {Enabled -eq $true} | Where-Object {
        $ObjectCN,$ParentCN,$null = $_.DistinguishedName -split "(?<=[^\\]),"
        $ParentCN -ne "OU=$OUName"
    }
    

    或排除在其祖先路径中具有给定 OU 名称的任何对象:

    $OUName = "Service Accounts"
    Get-ADUser -Filter {Enabled -eq $true} | Where-Object {
        $ObjectCN,$ParentCNs = $_.DistinguishedName -split "(?<=[^\\]),"
        $ParentCNs -notcontains "OU=$OUName"
    }
    

    自定义属性值

    Select-Object 支持计算属性。您可以提供带有静态表达式的计算属性作为要选择的第一个属性,如下所示:

    Get-ADUser | Select-Object @{Name="MyCustomColumn";Expression={"ACME"}},Name
    

    导出到 CSV,上面的示例将分别在 col A 和 B 中具有列标题“MyCustomColumn”和“Name”,col A 始终保存值“ACME”,而 col B 将保存各个名称用户

    【讨论】:

    • Where-Object 的性能真的很差。人们建议在 Where-Object 上使用 LDAPFilter
    • @KolobCanyon 正确,但您不能使用 LDAP 过滤器对 DistinguishedName 属性进行通配符过滤:-)
    • 我昨天才知道这个很难...真令人沮丧!
    • @KolobCanyon,如何合并 LDAPFilter 而不是 Where-Object?
    • @SeniorSystemsEngineer 你不知道,LDAP 不支持distinguishedName 上的部分名称过滤
    【解决方案2】:

    这行得通 - 谢谢大家。

    Get-ADUser -Filter {enabled -eq $true} | ? {$_.DistinguishedName -notlike "*,OU=Service Accounts,*"}
    

    还有自定义列:

    Select-Object -Property @{n="ColumnA"; e={"ACME"}}
    

    【讨论】:

      猜你喜欢
      • 2020-02-08
      • 2018-04-10
      • 2013-04-28
      • 2021-07-22
      • 2017-10-04
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多