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

时间:2017-06-15 04:49:29

标签: 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 $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 个答案:

答案 0 :(得分:0)

只是想让任何阅读此问题的人知道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