powershell Get-ADUser用于不精确的用户名

qojgxg4l  于 2023-05-17  发布在  Shell
关注(0)|答案(4)|浏览(195)

下面的脚本列出了一些用户的详细信息,它的作品,只有在情况下,我已经输入了确切的用户名。如果我输入了部分用户名,是否有一种方法可以用来获得结果?我的意思是,例如,如果我输入“elibukin”或“eli.buk”instaed的“eli.bukin”女巫是正确的用户名。

do {
    Write-Host "Who r we looking for ?        (type EXIT when u done)"
    $User = Read-Host
    Get-ADUser $User -Properties * |
        fl empl*,title, sam*, disp*, mail*, manager*, depa*, giv*, l, last*,
           logon*, when*
} until ($user -eq "exit")
afdcj2ne

afdcj2ne1#

我会使用-LDAPFilter和模糊的名称解析(ANR)。

Get-ADUser -LDAPFilter "(anr=smith)"

有关ANR的更多信息,请参见https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/1a9177f4-0272-4ab8-aa22-3c3eafd39e4b

xkrw2x1b

xkrw2x1b2#

实际上,我写过一个类似的剧本。我使用了-like操作符来适应部分匹配。但是,这可能会给您带来不止一个结果。

Get-ADUser -Filter ("SamAccountName -like '*$user*'")

或者使用以下格式来缩小结果范围:

Get-ADUser -Filter ("SamAccountName -like '*$user*' -and Name -like '*$FirstName*' -and Surname -like '*$Lastname*'")

使用-or而不是-and获得更广泛的结果。

2exbekwf

2exbekwf3#

如果需要模糊匹配,请使用参数-Filter-like运算符:

do {
  $user = Read-Host -Prompt 'Who are we looking for (type EXIT when done)'
  if ($user -ne 'exit') {
    Get-ADUser -Filter "SamAccountName -like '*$User*'" -Properties * |
      Format-List empl*,title, sam*, disp*, mail*, manager*, depa*, giv*, l,
                  last*, logon*, when*
  }
} until ($user -eq "exit")
3zwtqj6y

3zwtqj6y4#

您不必使用-ldapfilter。- 过滤器和歧义名称解析(https://en.wikipedia.org/wiki/Ambiguous_name_resolution)。我遇到过一个案例,givenname中有两个名字,电子邮件和upn不一样。

Get-ADUser -Filter "anr -eq 'joe smith'"

相关问题