首页 > 解决方案 > 在 Powershell Get-ADUser 查询中过滤具有未知数量的前导零的扩展属性

问题描述

我正在尝试通过 EmployeeID 匹配我的 AD 中的用户。问题是有些用户的前面有零,有些则没有。例如,有些用户是 001234,而其他用户是 01234 或 1234,所以我不能使用“eq”比较。是否有一个合理的查询我可以用来过滤这个而没有任何不匹配?我尝试了以下方法,几乎​​可以正常工作。

$employeeID = "*$($user.EmployeeID)"
$ADUser = Get-ADuser -Filter "EmployeeID -like '$employeeID'" -Properties SAMAccountName, EmployeeID

问题是,当搜索 1234 时,这将返回诸如 001234 和 012345 之类的内容。其他示例是 000123 和 002123 等都将为具有 EID 123 的用户出现。

有没有更好的方法可以构建它?我查看了 Get-ADUSer 和 about_ActiveDirectory_Filter 技术文档,但没有一个完全涵盖了我想要的内容。我不太确定如何构建它以仅搜索它。

谢谢!

标签: powershellactive-directory

解决方案


$reg = "[0]*1940$"
$users = Get-ADUser -Filter * -Properties EmployeeID | select EmployeeID
$users | ? {$_.EmployeeID -match $reg}

我做了一些进一步的测试和谷歌搜索,最后在这里 - 搜索,然后是正则表达式结果。是的,这很慢,但我正在构建 $users 然后每周与正则表达式匹配一次,所以并不十分担心。


推荐阅读