Get-ADUser表示用户名不是

时间:2016-01-07 19:29:04

标签: powershell active-directory powershell-v3.0

下面的脚本列出了一些用户详细信息,仅在我输入了EXACT用户名时才有效。如果我键入部分用户名,是否有可用于获取结果的方法? 我的意思是,例如我输入“elibukin”或“eli.buk”instaed of“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")

3 个答案:

答案 0 :(得分:4)

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

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

有关ANR的更多信息,请参阅https://support.microsoft.com/en-us/kb/243299

答案 1 :(得分:1)

我实际上是在编写一个像这样的脚本。我使用-like运算符来容纳部分匹配。但是,这可能会给你带来不止一个结果。

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

或者使用这种格式来缩小搜索范围:

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

使用-or代替-and获得更广泛的结果。

答案 2 :(得分:0)

如果您想要模糊匹配,请使用参数-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")