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 $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

回答(1)

2 years ago

只是想让任何读过这个问题的人知道Mjolinor的评论就是答案 . 使用每个名称末尾的空格get-aduser doenst返回任何结果 . 我更新了我的代码如下

$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