我在这个问题上遇到了困难,我知道它可能是一个简单的语法问题。我不知道如何将这个变量传递给代码块并让它正确识别。
$user = "Some.Person"
这正如我所料。
get-aduser -filter {(Samaccountname -eq $user)}
这不是
get-aduser -filter {(userprincipalname -like $user*)}
尝试使用"$user*"
,"'$user*'"
以及其他一些变种无效。
最终结果将使用如下,因为我们有AD帐户,其中UPN与UserName不同,我有一个完整的用户名格式值列表,我需要确认仍存在活动帐户。
Get-ADUser -Filter {(UserPrincipalName -like "$user*") -or (SamAccountName -eq "$user")} -SearchBase "" -Server "MyServer:3268"
答案 0 :(得分:1)
奇怪的行为,这不是答案,而是一个转折点; personnaly,我使用-LDAPFilter
:
Get-ADUser -LDAPFilter "(userprincipalname=$user*)"
过滤器的波兰表示法在开头有点令人不安,但在这里,这是使用底层协议LDAP进行过滤的自然方式。
Get-ADUser -LDAPFilter "(|(userprincipalname=$user*)(samAccountName=$user))"
您可以在Search Filter Syntax中获得有关此语法的更多信息,您也可以在About_ActiveDirectory_Filter中获得相应的过滤器。
如果您真的想使用-Filter
语法,可以执行以下操作(我不为此感到自豪):
$userstar = "$user*"
Get-ADUser -Filter {(userprincipalname -like $userstar) -or (samAccountName -like $user)}