下面的脚本列出了一些用户详细信息,它仅在我输入了准确的用户名的情况下才有效。如果我输入部分用户名,是否有一种方法可以用来获取结果? 我的意思是,例如,如果我输入“eli.bukin”女巫的“elibukin”或“eli.buk”是正确的用户名。
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")
我会使用 -LDAPFilter 和不明确的名称解析 (ANR)。
Get-ADUser -LDAPFilter "(anr=smith)"
有关 ANR 的更多信息,请参阅https://support.microsoft.com/en-us/kb/243299。
我实际上已经编写了一个非常像这样的脚本。我使用 -like 运算符来适应部分匹配。然而,这可能会给你不止一个结果。
Get-ADUser -Filter ("SamAccountName -like '*$user*'")
或者使用这种格式的东西来缩小你的结果:
Get-ADUser -Filter ("SamAccountName -like '*$user*' -and Name -like '*$FirstName*' -and Surname -like '*$Lastname*'")
使用
-or
而不是 -and
以获得更广泛的结果。
如果你想要模糊匹配,请使用参数
-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")
-过滤器和歧义解析:
Get-ADUser -Filter "anr -eq 'smith'"