Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell使用通配符将变量传递到过滤器_Powershell_Filter_Active Directory - Fatal编程技术网

Powershell使用通配符将变量传递到过滤器

Powershell使用通配符将变量传递到过滤器,powershell,filter,active-directory,Powershell,Filter,Active Directory,我在这一点上有点困难,我知道这可能是一个简单的语法问题。我不知道如何将这个变量传递到代码块中并正确地确认它 $user = "Some.Person" 这是我所期望的 get-aduser -filter {(Samaccountname -eq $user)} 这是不可能的 get-aduser -filter {(userprincipalname -like $user*)} 尝试了“$user*”,“$user*”以及其他一些变体,但均无效 最终的结果将是使用如下,因为我们有广告帐

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

$user = "Some.Person"
这是我所期望的

get-aduser -filter {(Samaccountname -eq $user)}
这是不可能的

get-aduser -filter {(userprincipalname -like $user*)}
尝试了
“$user*”
“$user*”
以及其他一些变体,但均无效

最终的结果将是使用如下,因为我们有广告帐户,其中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))"
您可以在中获得有关此语法的更多信息,也可以在中获得相应的筛选器


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


这是否有效:
getaduser-filter{userprincipalname-like“$user*”}
@keithhill-negative。。。。没有任何类型的错误或警告,只有空结果。用文本替换变量效果很好。此cmdlet不在ActiveDirectory模块中,并且帮助参考似乎没有对使用通配符传递变量提供任何帮助。我将尝试ldap筛选器方法。看起来很标准。你知道一个比另一个更有效率吗?我不是在处理大量的用户帐户查询,只是好奇而已。据我所知,LDAP筛选器与PowerShell筛选器一样高效,只是因为我非常确定PowerShell筛选器已转换为标记为答案的LDAP筛选器(即本机ptotocle),这两种方法都有效,我将坚持使用LDAPFilter方法。多谢!另一方面。不知道为什么,但当使用
-LDAPFilter
并使用不返回命中的值进行查询时,我会得到一个空对象,而使用
-Filter
时,我会得到空白,这也是一个解决问题的挑战。
$userstar = "$user*"
Get-ADUser -Filter {(userprincipalname -like $userstar) -or (samAccountName -like $user)}