powershell:使用带有通配符的变量和 get-aduser

powershell:使用带有通配符的变量和 get-aduser

我是 powershell 新手。我正在编写一段简单的代码,通过输入用户名的字母来帮助我查找用户。如何让通配符与变量一起工作?这有效:

$name=read-host -prompt "enter user's first or last initial"
$userInput=get-aduser -f {givenname -like 'A*' } 
cmd /c echo "output: $userInput"

这并不:

$name=read-host -prompt "enter user's first or last initial"
$userInput=get-aduser -f {givenname -like '$name*' } 
cmd /c echo "output: $userInput"

第一部分代码提供了名称中带有“A”的用户列表。如有任何建议,我们将不胜感激。谢谢

答案1

$lastname = "smith"
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(Sn=*$lastname*))"

返回姓氏与搜索模式匹配的用户列表*smith*,因此它将返回 Haysmith、Smithwood、McSmithers 等。

答案2

当使用单引号时,转义符和自动字符串替换(例如,使用字符串内的变量)将被消除。

虽然 Ryan Ries 的答案将与-LDAPFilter参数一起使用,但要使用该-Filter参数,您必须连接或使用转义字符。

使用转义字符(字符前的撇号):

$userInput=get-aduser -f "GivenName -like `"$name*`""

使用字符串连接:

$userInput=get-aduser -f ('GivenName -like "' + $name + '*"')

更好的可读性:

$name = read-host -prompt "enter user's first or last initial"
$filter = 'GivenName -like "' + $name + '*"'
$userInput = Get-ADUser -Filter $filter

相关内容