【问题标题】:Get-ADUser for not exact usernameGet-ADUser 获取不准确的用户名
【发布时间】:2016-01-07 19:29:03
【问题描述】:

下面的脚本列出了一些用户详细信息,它仅在我输入了确切用户名的情况下才有效。如果我输入部分用户名,是否有可以用来获取结果的方法? 我的意思是,如果我输入“elibukin”或“eli.buk”而不是“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")

【问题讨论】:

  • 查看 Get-ADUser 的帮助。特别是 -Filter 参数。
  • 您可以通过使用 Read-Host 表达问题来改进您的代码:$User = Read-Host -Prompt "Who r we looking for ? (type EXIT when u done)"
  • thanX 非常多的人,我设法自己处理了它:>

标签: powershell active-directory powershell-3.0


【解决方案1】:

我会使用 -LDAPFilter 和不明确的名称解析 (ANR)。

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

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

【讨论】:

【解决方案2】:

我实际上已经编写了一个类似这样的脚本。我使用 -like 运算符来适应部分匹配。但是,这可能会给您带来不止一个结果。

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

或者使用这种格式的东西来缩小你的结果:

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

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

【讨论】:

  • 无需重新发明轮子。我建议使用 ANR(请参阅我的答案),因为它可以很好地找到跨一组不同属性的部分匹配名称。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 2020-05-01
    • 1970-01-01
    • 2014-11-29
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多