Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops Powershell循环仅在最后一个循环中执行命令为什么?_Loops_Powershell - Fatal编程技术网

Loops Powershell循环仅在最后一个循环中执行命令为什么?

Loops Powershell循环仅在最后一个循环中执行命令为什么?,loops,powershell,Loops,Powershell,我正在编写一个简单的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

我正在编写一个简单的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不返回任何结果。我更新了我的代码如下

    $a = $(($name).trim())
    Write-Host "checking $a now"

    Get-ADUser -Filter { Name -eq $a } | select name | ft -HideTableHeaders
获得了预期的产量

checking Donna Anthes now

Donna Anthes
Donna Anthes


checking Jessica Kelly now

Jessica Kelly


checking Malcolm Page now

Malcolm Page


checking Rommie Redlich now

Rommie Redlich
Rommie Redlich

这并不意味着它只在最后一个循环上执行命令,而是意味着Get-ADUser只与最后一个循环上的名称匹配。您可能希望利用不明确的名称解析:
Get-ADUser-LDAPFilter”(&(anr=$name))”
如果输出正确,则文本文件中的所有名称都会出现尾随空格,除了最后一个,这可以解释为什么这是它唯一的发现。Mjolinor的建议就是答案。非常感谢你