在 Powershell Get-ADUser 查询中过滤具有未知数量的前导零的扩展 属性
Filter on extended property with unknown number of preceeding zeroes in Powershell Get-ADUser Query
我正在尝试通过 EmployeeID 匹配我的广告中的用户。麻烦的是,有些用户在前面列出了零,有些则没有。例如。有些用户是 001234,而其他用户是 01234 或 1234,所以我不能使用 'eq' 比较。是否有一个合理的查询可以用来过滤这个而不会有任何不匹配?我尝试了下面的方法,几乎可以正常工作。
$employeeID = "*$($user.EmployeeID)"
$ADUser = Get-ADuser -Filter "EmployeeID -like '$employeeID'" -Properties SAMAccountName, EmployeeID
问题是,当搜索 1234 时,这将 return 诸如 001234 和 012345 之类的东西。其他示例是 000123 和 002123 等,它们都会为 EID 123 的用户出现。
有没有更好的方法来构造它?我查看了 Get-ADUSer 和 about_ActiveDirectory_Filter technet 文档,但其中 none 完全涵盖了我想要的内容。我不太确定如何构建它以仅搜索它。
谢谢!
$reg = "[0]*1940$"
$users = Get-ADUser -Filter * -Properties EmployeeID | select EmployeeID
$users | ? {$_.EmployeeID -match $reg}
我做了一些进一步的测试和谷歌搜索,结果在这里 - 搜索,然后对结果进行正则表达式。是的,这很慢,但我正在构建 $users 然后每周与正则表达式匹配一次,所以不太担心。
鉴于所有 EmployeeID 属性都是数字,您可以这样做
# convert the EmployeeID string to an integer number
$employeeID = [int]$user.EmployeeID
# Pre-Filter the results and refine in the Where-Object clause
$ADUser = Get-ADuser -Filter "EmployeeID -like '*$employeeID'" -Properties EmployeeID |
Where-Object {[int]$_.EmployeeID -eq $employeeID}
Get-ADUser
returns 这些属性默认为:DistinguishedName, Enabled, GivenName, Name, ObjectClass, ObjectGUID, SamAccountName, SID, Surname, UserPrincipalName,所以SamAccountName不需要在-Properties
参数中指定
我正在尝试通过 EmployeeID 匹配我的广告中的用户。麻烦的是,有些用户在前面列出了零,有些则没有。例如。有些用户是 001234,而其他用户是 01234 或 1234,所以我不能使用 'eq' 比较。是否有一个合理的查询可以用来过滤这个而不会有任何不匹配?我尝试了下面的方法,几乎可以正常工作。
$employeeID = "*$($user.EmployeeID)"
$ADUser = Get-ADuser -Filter "EmployeeID -like '$employeeID'" -Properties SAMAccountName, EmployeeID
问题是,当搜索 1234 时,这将 return 诸如 001234 和 012345 之类的东西。其他示例是 000123 和 002123 等,它们都会为 EID 123 的用户出现。
有没有更好的方法来构造它?我查看了 Get-ADUSer 和 about_ActiveDirectory_Filter technet 文档,但其中 none 完全涵盖了我想要的内容。我不太确定如何构建它以仅搜索它。
谢谢!
$reg = "[0]*1940$"
$users = Get-ADUser -Filter * -Properties EmployeeID | select EmployeeID
$users | ? {$_.EmployeeID -match $reg}
我做了一些进一步的测试和谷歌搜索,结果在这里 - 搜索,然后对结果进行正则表达式。是的,这很慢,但我正在构建 $users 然后每周与正则表达式匹配一次,所以不太担心。
鉴于所有 EmployeeID 属性都是数字,您可以这样做
# convert the EmployeeID string to an integer number
$employeeID = [int]$user.EmployeeID
# Pre-Filter the results and refine in the Where-Object clause
$ADUser = Get-ADuser -Filter "EmployeeID -like '*$employeeID'" -Properties EmployeeID |
Where-Object {[int]$_.EmployeeID -eq $employeeID}
Get-ADUser
returns 这些属性默认为:DistinguishedName, Enabled, GivenName, Name, ObjectClass, ObjectGUID, SamAccountName, SID, Surname, UserPrincipalName,所以SamAccountName不需要在-Properties
参数中指定