【发布时间】:2017-06-16 08:50:22
【问题描述】:
我正在编写一个简单的 powershell 脚本,它从文本文件中读取用户名列表,对于每个名称运行命令“Get-ADUser -Filter {Name -eq $name} | select name”但是代码只完成了搜索列表中的姓氏,而不是列表中的每个人,任何人都可以解释为什么会发生这种情况?
foreach($name in $(gc .\tmp\checkname.txt))
{
Write-Host "checking $name now"
Get-ADUser -Filter {Name -eq $name} | select name
}
输出如下
checking Donna Anthes now
checking Jessica Kelly now
checking Malcolm Page now
checking Rommie Redlich now
name
----
Rommie Redlich
我希望输出如下所示
checking Donna Anthes now
name
----
Donna Anthes
checking Jessica Kelly now
name
----
Jessica Kelly
checking Malcolm Page now
name
----
Malcolm Page
checking Rommie Redlich now
name
----
Rommie Redlich
【问题讨论】:
-
这并不意味着它只在最后一个循环中执行命令,它意味着Get-ADUser只在最后一个循环中匹配名称。
-
您可能想要利用不明确的名称解析:
Get-ADUser -LDAPFilter "(&(anr=$name))" -
如果该输出正确,则文本文件中的所有名称似乎都有尾随空格,除了最后一个,这可以解释为什么它是唯一找到的。
-
Mjolinor 的建议就是答案。非常感谢
标签: loops powershell