我是 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