【问题标题】:Get-AdUser where mail is not null邮件不为空的 Get-AdUser
【发布时间】:2015-01-14 15:43:06
【问题描述】:

我正在尝试获取 AD 中具有电子邮件(邮件属性)的所有用户的列表。我有这个命令

Get-AdUser -filter * -Properties mail | Select SAMAccountName, mail | Export-CSV -Path $userPath -NoTypeInformation

问题是我不知道如何限制或过滤电子邮件为空/空白的用户。我不在乎脚本有多复杂,因为它将成为更大的 powershell 脚本的一部分。如果解决方案是遍历 CSV,这是一个选项,但更喜欢更快的东西。有人知道怎么做吗?

【问题讨论】:

    标签: email powershell active-directory


    【解决方案1】:

    试试这个:

    Get-ADUser -Properties mail -Filter {mail -like '*'}
    

    【讨论】:

    • 这会返回所有没有电子邮件的用户。我用 -like 替换了它,它起作用了。谢谢!
    • 我将此与另一个答案进行了比较,在 10,000 个用户域上这大约快 0.5 秒。在谈论会加起来的更大域时。
    • 尽可能使用早期过滤。
    【解决方案2】:

    试试这个:

    Get-ADUser -Properties mail | where {$_.mail -ne $null} | Select SAMAccountName, mail | Export-CSV -Path $userPath -NoTypeInformation
    

    【讨论】:

    • 我必须添加 -filter * 因为它是必需的属性,但这有效。谢谢!
    • 虽然这在技术上是一个有效的答案,但您将在应用过滤器之前从目录中提取所有对象 - 这是一种最低效的做事方式。 mjolinor 提供的答案是处理此任务的更好方法。
    【解决方案3】:

    问题已经得到解答,但对我来说,最简单的方法是依赖 LDAP 过滤器语法。例如:

     Get-ADUser -LDAPFilter "(mail=*)"
    

    “=*”是标准的 LDAP 运算符:

    *(通配符)

    您使用通配符运算符来表示可以等于任何值的值。一种这样的情况可能是,如果您想查找所有具有 title 值的对象。 e 为标题。然后你会使用:

    (标题=*)

    来源LDAP Query Basics

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多