获取ADUser-筛选器解析



我正在运行一个脚本,该脚本从SAP摘录中获取一个人的名字和姓氏,并读取AD以获取他们的UPN。对大多数人来说,这是有效的;然而,有一群用户的名字是个问题。例如,SAP中的"Philip Davies"(为保护无辜而更改名称(在AD中是"Phil Davie斯"。因此:我使用了以下命令,它有效:

代码:

Get-ADUser -SearchBase "OU=CBC Users,DC=cbc,DC=int" -Filter {GivenName -eq "Phil" -and Surname -eq "Davies"}

然后我意识到我可以检查合同名称中通常相同的前三个字符。。。所以我做了这个也有效的:

代码:

Get-ADUser -SearchBase "OU=CBC Users,DC=cbc,DC=int" -Filter {GivenName -like "Phi*" -and Surname -eq "Davies"}

下一步:变量;所以我尝试了这个,它有效:

代码:

$fna="Phil"
Get-ADUser -SearchBase "OU=CBC Users,DC=cbc,DC=int" -Filter {GivenName -eq $fna -and Surname -eq "Davies"}

但如果我尝试这个:

代码:

$fna="Philip"
$fna=$fna.Substring(0,3)
Get-ADUser -SearchBase "OU=CBC Users,DC=cbc,DC=int" -Filter {GivenName -like $fna* -and Surname -eq "Davies"}

我没有结果。不管我用括号、双引号、单引号还是其他什么都没关系。一旦我尝试解析变量并使用通配符,它要么会产生错误消息,要么没有结果。

有人可以通过使用"-ldapfilter">方法或告诉我如何解析AND通配符来帮助我吗?

感谢

您不应该将通配符与变量一起使用,因为您希望使用字符串名称进行检查。因此,您可以直接用通配符包装字符串,并将最后的内容存储在一个变量中,如:

$fna="Philip"
$fna="$($fna.Substring(0,3))*"
Get-ADUser -SearchBase "OU=CBC Users,DC=cbc,DC=int" -Filter {GivenName -like $fna -and Surname -eq "Davies"}

或者您可以直接使用LDAP筛选器,如:

Get-ADUser -SearchBase "OU=CBC Users,DC=cbc,DC=int" -LDAPFilter "(&(GivenName=$fna)(Sn=Davies))"

希望能有所帮助。

最新更新