Powershell 将变量传递给带有通配符的过滤器

2024-04-13

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

$user = "Some.Person"

这正如我所期望的那样。

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

这不

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

尝试过的变化"$user*", "'$user*'"以及其他一些无济于事。

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

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

奇怪的行为,这不是答案,而是一个转变;就我个人而言,我使用-LDAPFilter :

Get-ADUser -LDAPFilter "(userprincipalname=$user*)"

过滤器的波兰表示法一开始有点令人不安,但在这里,它是使用底层协议 LDAP 进行过滤的自然方式。

Get-ADUser -LDAPFilter "(|(userprincipalname=$user*)(samAccountName=$user))"

您可以在以下位置获取有关此语法的更多信息搜索过滤器语法 http://msdn.microsoft.com/en-us/library/aa746475%28v=vs.85%29.aspx,您还可以在中获取相应的过滤器关于_ActiveDirectory_过滤器 http://technet.microsoft.com/en-us/library/hh531527%28v=ws.10%29.aspx.


如果你真的想使用-Filter语法你可以执行以下操作(我对此并不感到自豪):

$userstar = "$user*"
Get-ADUser -Filter {(userprincipalname -like $userstar) -or (samAccountName -like $user)}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell 将变量传递给带有通配符的过滤器 的相关文章

随机推荐