0

我在这方面遇到了困难,我知道这可能是一个简单的语法问题。我不知道如何将此变量传递到代码块中并正确确认它。

$user = "Some.Person"

这如我所料。

get-aduser -filter {(Samaccountname -eq $user)}

这不

get-aduser -filter {(userprincipalname -like $user*)}

尝试了"$user*""'$user*'"以及其他一些无济于事。

最终结果将如下使用,因为我们有 UPN 与用户名不同的 AD 帐户,并且我有一个完整的用户名格式值列表,我需要确认仍然存在活动帐户。

Get-ADUser -Filter {(UserPrincipalName -like "$user*") -or (SamAccountName -eq "$user")} -SearchBase "" -Server "MyServer:3268"
4

1 回答 1

1

奇怪的行为,这不是答案,而是转身;个人而言,我使用-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)}
于 2013-10-04T03:36:33.347 回答