从 csv 文件创建对象数组的问题

Issue creating an array of objects from a csv file

我对 Powershell 还很陌生,所以这可能是一个菜鸟错误,但我正在尝试获取仅包含用户显示名称的 CSV 文档,查询 AD 以获取所需信息,并将该信息填充到对象属性中使用哈希 table。

这是我现在拥有的

$Path = "C:\Scripts\Generate-CSRSpreadsheets\Roster-Jpay.csv"
$Table = Import-csv -Path $Path -Header EmployeeDisplayName
$Array = @()
$ADUser = Get-ADUser -Properties DisplayName,Manager -Filter {DisplayName -eq $_.EmployeeDisplayname}


ForEach($User in $Table){

    $Object = New-Object PSObject -Property @{

        DisplayName = $ADUser.DisplayName
        GivenName   = $ADUser.GivenName
        Surname     = $ADUser.Surname
        Email       = $ADUser.Mail
    }

    $Array += $Object
}

在我看来它应该可以正常工作,但是当我检查我的输出时它看起来像这样:

Example Output Image

假设在这个例子中我有 9 个用户,但它只输出 csv 中最后一个用户的信息。我一直在研究这段代码,但我看不出它有什么问题。任何帮助将不胜感激。

谢谢

您需要将 Get-ADUser 移到循环内:

$Path = "C:\Scripts\Generate-CSRSpreadsheets\Roster-Jpay.csv"
$Table = Import-csv -Path $Path -Header EmployeeDisplayName
$Array = @()

ForEach($User in $Table){

    $ADUser = Get-ADUser -Filter "DisplayName -eq '$($User.EmployeeDisplayName)'" -Properties DisplayName,Manager

    $Object = New-Object PSObject -Property @{

        DisplayName = $ADUser.DisplayName
        GivenName   = $ADUser.GivenName
        Surname     = $ADUser.Surname
        Email       = $ADUser.Mail
    }

    $Array += $Object
}