第二次与Get-ADUser过滤器参数匹配

时间:2018-08-30 04:52:45

标签: powershell active-directory

我将必须逐步解释这一点。首先,这是我要开始工作的一些代码:

$Users = Get-Content c:\textfile.txt
foreach ($user in $users) {Get-ADuser -Filter {UserPrincipalName -like "$user*"}}

因此,当我运行它时,它什么也不返回,我知道这是错误的。所以我用断点看了一点。我发现变量 $ user 确实填充了正确的值。作为测试,我用文本文件中的一个值(使它看起来像下面的代码)替换了过滤器中的 $ user ,并逐步执行了该操作。

$Users = Get-Content c:\textfile.txt
foreach ($user in $users) {Get-ADuser -Filter {UserPrincipalName -like "1234567890*"}}

这是有趣的地方。我将断点放在foreach行上,因为它让它第一次运行,除了空白行外,没有任何内容写入屏幕。当我第二次浏览它时,输出就像命令已运行两次一样,即用户主体名称如1234567890 *的用户对象两次写入屏幕。

作为另一个线索,我尝试了以下代码:

Get-Content c:\textfile.txt | Get-ADuser -Filter {UserPrincipalName -like "$_*" }

它弹出一个错误,提示Filter参数不接受管道输入。我不知道这是否意味着什么,但我怀疑那没有意义,因为我并没有在原始代码中真正使用管道。尽管我已经使用Powershell已有一段时间了,但是我没有跟踪的Get-ADUser cmdlet可能是一个超基本的东西。

1 个答案:

答案 0 :(得分:0)

在AD中使用过滤器有点麻烦。实际上是-filter <string>

Get-ADUser -Filter "UserPrincipalName -like '$($user)*'"

where-object是您尝试使用的另一种过滤器语法。例如。 where-object {UserPrincipalName -like "$user*"}