powershell:通过get-aduser使用通配符

PowerShell的新手在这里。 我正在构build一个简单的代码来帮助我通过input用户名的字母来查找用户。 我如何得到一个通配符工作瓦特/variables? 这工作:

$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”的用户列表。 任何build议,不胜感激。 谢谢

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

返回姓氏( *smith* )与*smith*的search模式匹配的用户列表,所以将返回Haysmith,Smithwood,McSmithers等。

当使用单引号时,转义字符和自动stringreplace(例如,在string中使用variables)将被删除。

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

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

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

使用string连接:

 $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